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

来源:互联网 发布:oracle数据库无法连接 编辑:程序博客网 时间:2024/06/04 18:29

题目:楼梯一次可以爬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;      }


 

原创粉丝点击