此类题目一般满足f(n) = f(n-1)+f(n-2)的规律,比如输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)
1.递归解决
int Fibonacci(int n) {
if (n==0 || n==1) return n;
return Fibonacci(n-1) + Fibonacci(n-2);
}
2.循环解决:
int Fibonacci(int n) {
if(n == 0)
return 0;
if(n == 1)
return 1;
//接下来两个值就是初始可以直接推导的两个值
int i = 0;
int j = 1;
int ans = 0;
//循环从第三个数开始,也就是不推导的第一个数
for(int k = 2; k <= n;k++)
{
ans = i+j;
i = j;
j = ans;
}
return ans;
}
变态跳台阶的是2的n减一次方