递归实现方式:
#include<stdio.h>
int Add(int x)
{
if (x <= 3)
return x;
else
return Add(x-2) + Add(x - 1);
}
int main()
{
int n = 0;
printf("请输入台阶数");
scanf_s("%d", &n);
Add(n);
printf("青蛙有%d种跳法\n", Add(n));
return 0;
}
循环实现方式:
#include<stdio.h>
int Add(int x)
{
int a = 2;
int b = 3;
int ret = 0;
int i = 3;
if (x < 4)
return x;
else
{
for (i = 3; i < x; i++)
{
ret = a + b;
a = b;
b = ret;
}
}
return ret;
}
int main()
{
int n = 0;
printf("请输入台阶数");
scanf_s("%d", &n);
printf("青蛙有%d种跳法\n", Add(n));
return 0;
}
两种代码执行结果如下图,两种代码唯一区别是使用递归实现容易造成栈溢出