斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
递归
public static int fibonacci(int n){
if(n==0) return 0;
if(n<2) return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
中间变量
public static int fibonacci(int n){
if(n==0) return 0;
if(n<=2) return 1;
int a =0;
int b=1;
int c =0;
for(int i=1;i<n;i++){
c = a+b;
a=b;
b = c;
}
return c;
}
尾递归
一次递归,不进行回溯,递归的时候把当前计算的值传递下去
public static int fibonacci(int per,int res,int n){
if(n==0) return 0;
if(n<2) return per;
return fibonacci(res,per+res,n-1);
}