fibonacci 数列 【数学】的使用哈 我的笨方法
int jumpFloor(int number ) {
    // write code here
    if(number ==1 )
    return 1;
    if(number == 2)
    return 2;
    
    return jumpFloor(number-1)+jumpFloor(number-2);
    
}
递归开销,有重复计算
用空间省时间
int f[100]={0}; //空间在这里
/**
 * 
 * @param number int整型 
 * @return int整型
 */
int jumpFloor(int number ) {
    // write code here
    if(number <= 1 )
    return 1;
    if(f[number] >0)
        return f[number];
    
    return f[number] = jumpFloor(number-1) + jumpFloor(number-2);
    
}
第三种 空间和效率最好 还简单的方法
int f[100]={0};
/**
 * 
 * @param number int整型 
 * @return int整型
 */
int jumpFloor(int number ) {
    // write code here
    if(number <= 1 )
    return 1;
    // if(f[number] >0)
    //     return f[number];
    
    // return f[number] = jumpFloor(number-1) + jumpFloor(number-2);
    int a = 1 ,b =1 , c=1;
    for(int i= 2 ; i<= number ;i++){
        c = a + b;
        b = a; //这个顺序重要【】
        a = c ;//bigger 
    }    
    return c;
}
参考:https://blog.nowcoder.net/n/bd31ad8896db41a6882756245cc3930b



京公网安备 11010502036488号