有两种方法可以实现:递归和非递归。
第一:递归实现
算法思路:首先要找到递归公式:f(n)=f(n-1)+f(n-2)。这里直接看第n个阶梯,当我们最后一步登上阶梯的时候有两种方法,一种是从n-1阶走上去,另一种是从n-2阶走上去。引用递归就可以得出递归公式
代码部分:
#include<stdio.h>
#include<stdlib.h>
int f(int n)
{
if(n==1)
return 1;
else if(n==2)
return 2;
else
return f(n-1)+f(n-2);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("登上%d个阶梯共有%d方法.\n",n,f(n));
}
system("pause");
}
运行结果:
第二:非递归实现
算法思路:非递归实现需要借助for循环,找到循环体
代码部分:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n,first,second,total;
while(scanf("%d",&n)!=EOF)
{
first=0;
second=1;
for(i=1;i<=n;i++)
{
total=first+second;
first=second;
second=total;
}
printf("登上%d个阶梯共有%d方法\n",n,total);
}
system("pause");
}