c语言猴子跳台阶的问题:有一只淘气的猴子一次可以跳1个台阶,也可以一次跳2个台阶,还以一次跳3个台阶,现有n个台阶,猴子从第1台阶跳到第n个台阶总共有多少种跳法。(分别使用迭代算法和递归算法分别实现)
时间: 2024-02-05 11:10:29 浏览: 128
青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?
5星 · 资源好评率100%
迭代算法实现:
```c
#include <stdio.h>
int jump(int n) {
if (n <= 2) {
return n;
}
int a = 1, b = 2, c = 4;
for (int i = 4; i <= n; i++) {
int temp = c;
c = a + b + c;
a = b;
b = temp;
}
return c;
}
int main() {
int n;
printf("请输入台阶数:");
scanf("%d", &n);
printf("共有%d种跳法\n", jump(n));
return 0;
}
```
递归算法实现:
```c
#include <stdio.h>
int jump(int n) {
if (n <= 2) {
return n;
}
return jump(n - 1) + jump(n - 2) + jump(n - 3);
}
int main() {
int n;
printf("请输入台阶数:");
scanf("%d", &n);
printf("共有%d种跳法\n", jump(n));
return 0;
}
```
需要注意的是,递归算法实现中,当n较大时,会出现栈溢出的情况,因此在实际应用中建议使用迭代算法实现。
阅读全文