您的位置:首页 > 其它

递归和递推解决爬楼梯问题

2012-08-28 11:21 169 查看
题目:楼梯一次可以爬1级,也可以爬2级,有N级楼梯,有多少种走法?

看到此题首先找出规律

1 走到第1级,有1种方法

2 走到第2级,有2种方法

3 走到第3级,有3种方法

4 走到第4级,有5种方法

5 走到第5级,有8种方法

以此类推,后面的总等于前面两级方法之和,现在使用递归和递推两种方法解决本问题

利用递归实现

#include <stdio.h>

int climb(int pos)
{
if(1 == pos)
return 1;
else if(2 == pos)
return 2;
else
return (climb(pos-1)+climb(pos-2));
}

int main()
{
int stair = 0;
printf("Please Input:");
scanf("%d", &stair);
printf("Result:%d\n", climb(stair));
return 0;
}

利用递推实现,编译时注意要加上 -std=c99

#include <stdio.h>

int main()
{
int size;
printf("Please Input:");
scanf("%d", &size);
int stair[size];
stair[0] = 1;
stair[1] = 2;
for(int i=2; i<size; i++)
{
stair[i] = stair[i-1]+stair[i-2];
}
printf("Result:%d\n", stair[size-1]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: