题目一:求斐波那契数列的第n项。
写一个函数,输入n,求斐波那契(FIbonacci)数列的第n项。斐波那契数列定义如下:
递归与on
代码如下:
#include<stdio.h>
int fibonacci(int n){
if(n==0){
return 0;
}
if(n==1){
return 1;
}
return fibonacci(n-1)+fibonacci(n-2);
}
long long fibonacci2(int n){
int result[2] = {0,1};
if(n<2){
return result[n];
}
long long fibNMinusOne = 1;
long long fibNMinusTwo = 0;
long long fibN = 0;
for(int i=2;i<=n;i++){
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
int main(){
int n =10;
int k= fibonacci(n);
printf("%d\n",k);
long long nm = fibonacci2(n);
printf("%lld\n",nm);
return 0;
}
题目2:青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。
如果n级台阶第一次跳一级那么剩下的f(n-1)种跳法,如果第一次跳两级那么剩下的f(n-2)种跳法。斐波那契
扩展:如果如果一只青蛙可以跳上一级,二级,三级,...,n级台阶,根据归纳法,那么n级台阶共有f(n)=2的n-1次方