走台阶问题:
总共有n层台阶,每次可以走1节,也可以走2节。共有多少种走法?
可以有以下的递推方程:
f(n)=f(n-2)+f(n-1) n>2;
f(n)=2 n=2;
f(n)=1 n=1;
编程实现:
int f(intn)
{
if(1==n)
return1;
if(2==n)
return2;
returnf(n-2)+f(n-1);
}
上述递归解法 不是很好,可以采用如下的递推来解决:
int f1(int n)
{
int a0=1;int a1=2;
for(int i=2;i<n;i++)
{
int temp=a1;
a1+=a0;
a0=temp;
}
return a1;
}