C语言青蛙跳台阶问题:
一只青蛙可以一次跳一阶台阶,也可以一次跳两阶台阶。问青蛙跳上一个 n 级的台阶总共有多少种跳法?
思路:基础步骤:
跳1阶,剩余n-1阶:
跳1阶,剩余n-2阶;跳2阶,剩余n-3阶,……
跳2阶,剩余n-2阶:
跳1阶,剩余n-3阶;跳2阶,剩余n-4阶,……
举例:n=3:
跳1阶,剩余2阶:
跳1阶,剩余1阶;1
跳2阶,剩0阶;1
1+1=2
跳2阶,剩余1阶:
跳1阶,剩余1阶;1
1+2=3
代码:计算分支数量即可
#include<stdio.h>
int way(int n)
{
if(n<=1)
{
return 1;
}
else
{
return way(n-1)+way(n-2);
}
}
int main()
{
int n=0;
int sum=0;
printf("input the number:\n");
scanf("%d",&n);
sum=way(n);
printf("%d\n",sum);
return 0;
}
但是使用递归会造成重复计算,所以可以开发更高效的算法。以后再说。