• 爬楼梯——递归与函数自调用算法


    题目描述 Description

    树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
    例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级
    也可以第一次走两级,第二次走一级,一共3种方法。
     输入输出格式 Input/output
    输入格式:
    输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30
    输出格式:
    不同的走法数,每一行输入对应一行输出
     输入输出样例 Sample input/output
    样例测试点#1

    输入样例:

    5

    8

    10

    输出样例:

    8

    34

    89

    思路:

    利用枚举抽象出一般表达式:

    当n=0时,f(n)=1

    n=1,f(n)=1

    n=2,f(n)=2

    n=3,f(n)=3

    n=4,f(n)=5

    f(2)=f(1)+f(0)

    f(3)=f(2)+f(1)

    f(4)=f(3)+f(2)

    .......

    从上面分析可以归纳出一般表达式:f(n)=f(n-2)+f(n-1)

    所以这题就是变形的斐波那契数列!

     

    代码如下:

     

     1 #include <stdio.h>
     2 int dfs(int n)
     3 {
     4     if(n<3)//如果是1或2,分别有1、2种走法直接返回即可 
     5     {
     6         return n;
     7     }
     8     else//否则递归! 
     9     {
    10         return dfs(n-1)+dfs(n-2);//利用一般表达式来求解(其实就是斐波那契数列) 
    11     }    
    12 }
    13 int main()
    14 {
    15     int n;
    16     scanf("%d",&n);
    17     printf("%d
    ",dfs(n));
    18     return 0;
    19 }

     

     

  • 相关阅读:
    强大的晶体管
    FPGA--数字芯片之母
    方波中的毛刺
    运放,运放
    解决标准FPGA资源丰富却浪费的问题
    国产FPGA市场分析 该如何破局
    流行的FPGA的上电复位
    Git 学习笔记
    日志格式的配置
    Shiro 笔记
  • 原文地址:https://www.cnblogs.com/geek-007/p/5674279.html
Copyright © 2020-2023  润新知