zoukankan      html  css  js  c++  java
  • 两个经典递归问题:菲波那契数列 + 汉诺塔

    一.递归问题的处理步骤

       1)抽象出递归公式:对实际问题进行部分穷举,抽象出递归关系(关键),并列出“递归表达式”

       2)确定递归出口找出递归调用终止点

     

    二.菲波那契数列

      实际问题:兔子繁殖问题

            兔子在出生一个月后为成兔,两个月后就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有

      兔都不死,那么一年以后可以繁殖多少对兔子?

        1)抽象出递归公式

             初始为:1对幼兔

             第n个月    1      2       3       4      5      6      7   

             幼兔:      1      0       1       1      2      3      5

             成年兔:   0      1       1       2      3      5      8

             总计:      1      1       2       3      5      8     13

             规律:

             幼兔=前一个月成年兔

             成年兔=前一个月成年兔+前一个月幼兔

             总计=幼兔+成年兔=前一个月成年兔+(前一个月成年兔+前一个月幼兔)

                                       =前一个月成年兔+前一个月总计

                                       =(再前一个月成年兔+再前一个月幼兔)+前一个月总计

                                       =再前一个月总计+前一个月总计

             递归表达式如下

                   A(1)=A(2)=1,

                   A(N)=A(N-1)+A(N-2)(N>=3)

        2)找出递归调用终止点

                   由递归表达式很明显观察出,递归终止点为3;故剩下的A(1),A(2)直接穷举出来即可

                    一年后,相当于“第13个月”。

        代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int Fibonacci(int X)
     5 {
     6     if(X==1||X==2)
     7     {
     8         return 1;
     9     }
    10     else
    11     {
    12         return(Fibonacci(X-1)+Fibonacci(X-2));
    13     }
    14 }
    15 
    16 int main()
    17 {
    18     int tempInt;
    19     int returnInt;
    20 
    21     tempInt=13;
    22     returnInt=Fibonacci(tempInt);
    23 
    24     cout<<returnInt<<endl<<endl;
    25     system("pause");
    26     return 0;
    27 
    28 }

          运行结果:

         

     

    三.汉诺塔

        http://blog.163.com/liuknan@yeah/blog/static/16983829020109892141485/

  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2492055.html
Copyright © 2011-2022 走看看