C语言实现跳台阶
今天进行了一次学习尝试,毕竟算法学习这种东西就是需要多上手,多敲代码。
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这道题对我来说挺有难度的,因为我没联想到斐波那契数列(来自数学蒻鸡的哭泣),所以果断选择了看题解。
所以算法还是需要一定数学基础的嗯~ o( ̄▽ ̄)o。
简单来说,根据百度百科,在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
所以在这里,我们也采用递归的方法:
int JumpFloor(int n){
int a,b,ans,i;
if n(n<=1) return n;
a=1;
b=2;
for(i=3;i<=n;i++){
ans=a+b;
a=b;
b=ans;
}
return ans;
}