递归模型由什么组成(什么是递归算法?递归算法的特性?),本文通过数据整理汇集了递归模型由什么组成(什么是递归算法?递归算法的特性?)相关信息,下面一起看看。

  想必有很多小伙伴想多了解一下什么是递归算法,所以今天小豪边肖为大家收集了一些关于什么是递归算法的知识点。

  想必有很多朋友想多了解一下什么是递归算法。所以今天,小豪边肖收集了一些关于递归算法的知识,与大家分享。我希望你会喜欢它。递归算法是一种聪明但昂贵的算法,其中函数通过重复调用自己来获得最终结果。

  例如:

  汉诺塔的递归算法:

  道的版权归果芝答案网站或原版权人所有。

  无效移动(字符x,字符y){

  要心胸开阔,思想开放。没有公清风,采矿技术特殊。

   printf(%c - %cn ,x,y);

   }

   void hanoi(int n,char 1,char 2,char 3){

   if(n==1) move(一,三);

  否则{

  河内(n-1,一,三,二);

  动(一,三);

  河内(n-1,二,一,三);

  你是先被压的,但是你不能让它变红。

   }

   }

   main(){

   int n;

   printf(输入磁盘数量:);

   scanf(%d ,n);

   printf(移动的步骤=disks:n ,n);

   hanoi(n, A , B , C );

   }

  我来说说对递归的理解。

  首先,对于递归这样的函数,不用管它是做什么的,只要知道它的一个模糊函数是什么就行了,这就相当于把他想象成一个可以实现某个功能的黑盒,而不管它的内部运算。首先,好,我们来看看河内塔是怎么解决的。

  首先我上面说过,把递归函数想象成某个函数的黑盒,void Hanoi (int n,charone,chartwo,charthree);这个递归函数的作用是:从小到大放置的N个小矩形可以通过两个位置从一个位置移动到三个位置。那么你的主程序要解决的问题就是借助B把M个‘河内分块’从A移到C,根据上面说的河内塔的功能,我相信傻子也知道,在主函数里写:hanoi(m,A,B,C)可以借助B代码实现M个分块从A到C的转移吧?所以主函数中有河内(m, A , C , B );这通电话。

  接下来我们来看看hannoi函数要怎么做才能实现hannoi的这个功能。

   hannoi函数中有三行。

  河内(n-1,一,三,二);

  动(一,三);

  河内(n-1,二,一,三);

  用黑盒一样的方式看他,如果你想通过B把N个方块从A移动到C,可以分成上面三步吗?

  这三个部分是:第一步是将n-1块除了最后一个最长的块从一个位置移动到两个位置经过三个,也就是从A移动到C,然后用move函数直接将最低最长的块从A移动到C。之后的第三步是借助hannoi函数将刚刚的n-1块从B移动到C,分三步练习N块从A到B到C的函数。同样,你也不用担心hanoi函数是如何实现这个功能的。

  最后:递归是有结局的吧?结局就是只有一块的时候。河内塔怎么玩?很简单。只要把那块有A的移到C,就大功告成了。所以,如果(n==1)move(one,three)是加在末尾的hanoni的函数;(只有一个块的时候,直接A移动A到C就可以了。)这样的条件可以实现当哈诺因函数n=1时,将N个块从A经B移动到C的完整功能。

  这个复杂的递归思想就这样简单地解决了。呵呵,不知道你懂不懂?纯手工打字,希望能帮助你理解递归。

  综上所述,只要忽略递归的具体步骤,只要知道它的函数是什么,然后用自己的函数通过调用自己来求解自己的函数(容易绕口,天)。最后添加一个限制条件,比如上面提到的那个。

  本文到此结束,希望对你有所帮助。

  标签:

  声明:本文由用户上传。如有侵权,请联系删除!

  更多递归模型由什么组成(什么是递归算法?递归算法的特性?)相关信息请关注本站,本文仅仅做为展示!