zoukankan      html  css  js  c++  java
  • 爬楼梯——递归与函数自调用算法

    题目描述 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 }

     

     

  • 相关阅读:
    常用资源
    printf打印颜色
    Vue开发中踩坑-Day3
    Vue开发踩坑-Day2
    Vue开发中的踩坑-day1
    Python中virtualenv的使用
    第十一章:Python高级编程-协程和异步IO
    第十章:Python高级编程-多线程、多进程和线程池编程
    第九章:Python高级编程-Python socket编程
    自定义Element父子不关联的穿梭树
  • 原文地址:https://www.cnblogs.com/geek-007/p/5674279.html
Copyright © 2011-2022 走看看