用c语言中的递归算法写猴子跳台阶的问题:有一只淘气的猴子一次可以跳1个台阶,也可以一次跳2个台阶,还以一次跳3个台阶,现有n个台阶,猴子从第1台阶跳到第n个台阶总共有多少种跳法。
时间: 2024-02-05 13:11:34 浏览: 142
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
下面是用C语言实现猴子跳台阶问题的递归算法:
```c
#include <stdio.h>
int jump(int n) {
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else if (n == 3) {
return 4;
} else {
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;
}
```
在这个递归函数中,如果只有一个台阶,那么只有一种跳法;如果有两个台阶,那么有两种跳法;如果有三个台阶,那么有四种跳法。否则,猴子的最后一步可能跨越1、2、3个台阶中的一个,所以总的跳法数就是前n-1个台阶的跳法数加上前n-2个台阶的跳法数加上前n-3个台阶的跳法数。
阅读全文