zoukankan      html  css  js  c++  java
  • 递推和递归

    递推和递归

    递推

    递推犹如斐波那契数列:f(0) = 1, f(1) = 1;

    f(n) = f(n-1) + f(n-2);

    1 int i = 0;
    2 long fib[NUM] = {1,1};
    3 f(i=0; i<NUM; i++){
    4     fib[i] = fib[i-1] + fib[i-2];
    5 }

    注意这里只是循环没有自己调用自己。

    递归犹如汉诺塔:

    当A塔上有两个盘子是,先将A塔上的1号盘子(编号从上到下)移动到B塔上,再将A塔上的2号盘子移动的C塔上,最后将B塔上的小盘子移动到C塔上。

    A塔上有三个盘子,B塔会有两个正常的盘子(当然要借助C塔),然后,将最大的盘子移到C塔,然后将盘子移动到C塔上(借助A塔)。

    同理A塔上有N个盘子,B塔上有N-1个正常的盘子(借助C塔),然后,将N号盘子移动到C塔,最后将盘子移到C塔(借助A塔)。

    赤裸裸的递归,先来介绍一个函数,如下所示。

    hanoi(N,from,depend_on,to);//先将初始塔的前n个盘子借助目的塔移动到借用塔上  

     所以汉诺塔核心代码如下。

     1 hanoi(int n,char from, char depend_on, char to)
     2 {
     3     if(n==1)
     4         printf("%d\t %c->%c",n, from, to);
     5     else
     6         {
     7             hanoi(n-1,from, to, depend_on);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 
     8             printf("%d\t %c->%c",n, from, to);//将剩下的一个盘子移动到目的塔上  
     9             hanoi(n-1,denpend_on,from,to);//最后将借用塔上的n-1个盘子移动到目的塔上  
    10         }
    11 }

    自己调用自己了参见第7行和第九行。

  • 相关阅读:
    【大数据】中文词频统计
    【大数据】复合数据类型,英文词频统计
    Hadoop综合大作业
    分布式文件系统HDFS练习
    安装关系型数据库MySQL 安装大数据处理框架Hadoop
    爬取全部的校园新闻
    作业六|获取一篇新闻的全部信息
    理解爬虫原理
    作业——04 中文词频统计
    复合数据类型,英文词频统计
  • 原文地址:https://www.cnblogs.com/hellowu/p/3094982.html
Copyright © 2011-2022 走看看