首页 > 编程知识 正文

编写一个递归函数,什么是函数的递归调用

时间:2023-05-04 10:46:49 阅读:114989 作者:3876

本文是学习fqdttt递归调用的章节总结。

1 .函数递归:在调用某个函数的过程中,出现一种称为函数递归调用的函数,直接或间接调用该函数本身。

例:五个人在一起做,问了第五个人几岁,他说比第四个人大两岁。 当被问到第四个是几岁时,他说比第三个大两岁。 按顺序,第一个人是10岁。 第五个人几岁了?

这是递归问题,求解分为两个阶段。 第一个阶段是“推回”,将第n个人的年龄表示为第n-1个人年龄的函数,按顺序推回最后一个人的年龄。 获得第一个年龄后,回归递归,即第二阶段“递归”从第一个年龄开始依次类推第二个年龄,获得第n个年龄。 递归问题可以分为递归问题和递归问题两个阶段。

2 .递归求n!

求n!递推方法,也就是说,你可以从1开始,坐2,坐3,然后坐n。 推送法的特点之一是从已知出发,按照一定的规律推出以下事实。

求n! 也可以使用递归方法。 也就是n! 等于n*(n-1 )!

{ int f(intn ) intf; if(N0 ) cout'error '; ELSEif(n==0||n==1) f=1; ELSEf=n*f(n-1; 返回f; } 3.Hanoi (汉诺威问题是经典的数学问题,也是递归求解的典型例子。

主题:塔内有3个座,a、b、c,前a座有64个盘子,按从小到大的顺序排列。 我想把a座的盘子移到c座。 一次只能旋转一个,要求从上到下大。 编程并打印转移步骤。

算法思想:采用递归方法,已知n个盘子

1 .将a座的n-1盘转移到b座

2 .将a座的第n个盘子移到c座

3 .将b座的n-1盘移动到c座

第一步:为了解决将a座的n-1盘移动到b座的问题。 需要将a座n-2张盘子移动到c座,将a座n-1张盘子移动到b座,再将c座n-2张盘子移动到b座。 从后依次类推。

步骤2的直接移动不需要递归。

第3步(为了解决,将b座的n-1盘移动到c座。 必须将b座n-2张盘子移动到a座,将b座n-1张盘子移动到c座,然后将a座n-2张盘子移动到c座。 从后依次类推。

代码:

# includeiostreamusingnamespacestd; /**算法思想:用递归方法,n个盘子1.a座n-1个盘子b座2.a座n个盘子c座3.b座n-1个盘子c座**/voidmove(charx,char y ) coutx(-y ) 出局; if(n==1) { move(A ) a,c }; }else{Hanoi(n-1,a,c,b ); 移动(a,c ); Hanoi(n-1、b、a、c ); }返回计数; (}int main ) ) { int n; cinn; 长龙计数; count=Hanoi(n、' a '、' b '、' c ' ); coutendl '移动次数:“countendl; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。