假如有n个台阶,一次只能走一个或者两个,请问走到第n个台阶有多少总走法?
把大问题分割 ,不管走多少个台阶 最后都是要走一个或者两个 我们采取递归的思想,得出递归公式step(n)=step(n-1)+step(n-2)
假设走到第五个台阶 代入公式 s5=s4+s3; s4=s3+s2 ;s3=s2+s1 显然当还剩2和1时无法继续下去 其实也就是得到了我们的终止条件 1==n||2==n; 上一个台阶只有一种方法 上两个台阶可以一次走两个 也可以分两次走 也就是两种方法 所以我们直接return n;就行了
#include <stdio.h>
int step(int i)
{
if(1==i||2==i){ //结束条件
return i;
}
return step(i-1)+ step(i-2); //公式
}
int main() {
int n;
scanf("%d",&n);
printf("step(%d)=%d\n",n, step(n));
return 0;
}