简述递归问题的求解过程

2024-05-13 04:39

1. 简述递归问题的求解过程

递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。
在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。
在编写递归函数时要注意,函数中的局部变量和参数只是局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。

简述递归问题的求解过程

2. 递归问题(求过程)

递归算法的执行过程分递推和回归两个阶段在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。

在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。

在编写递归函数时要注意,函数中的局部变量和参数只是局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。

3. 求解递归问题

调用多少次自己取决于这个函数的两个参数x和y的值。
首先你的这个gys函数是利用辗转相除法求两个整数的最大公约数。
你首先得了解什么是辗转相除法求最大公约数下面是百度百科解释:

下面再来看你这个函数就方便理解了:
根据辗转相除法的定义描述,首先方法传递进来两个整数 x,y ;x是被除数,y是除数。如果y!=0; 那么就需要把x%y(这是取x除以y的余数)的值作为除数,y作为被除数,再次调用你的这个函数自身,只要不满足y==0 (也就是你的这个条件y!=0 值是false的时候),就会一直循环调用这个函数自身,直到y==0才会返回x就是你的这句 return x;假设此时x的值是b, 之后你调用自身函数就会把这个b一层一层的返回。那么你调用这个方法的最终结果就是b.
为了让你更加清晰的了解这个递归过程我举个例子:
比如:
step1,调用gys(21,14)-> y=14 不满足 y==0 则调用函数自身,其中x%y也就是21%14=7 下一步;
step2,调用gys(14, 7)-> y= 7 不满足 y==0 则调用函数自身,其中x%y也就是14%7 =0 下一步;
step3,调用gys(7, 0)-> y= 0  满足 y==0 则这返回 x,其中x=7 下一步;
step4,  返回 step3中调用的gys(7, 0)=7 下一步;
step5, 返回 step2中调用的gys(14, 7)=7 下一步;
step6, 返回 step1中调用的gys(21, 14)=7 下一步;
程序结束,得到调用gys(21, 14)的值为7.

求解递归问题

4. 递归问题的求解一定含有递推过程吗

您好,是的,递归问题的求解一定含有递推过程。递推一般用循环来解决,从已知条件到未知逐渐接近结果;递归一般自己调用自己,从未知到已知,把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。【摘要】
递归问题的求解一定含有递推过程吗【提问】
您好,是的,递归问题的求解一定含有递推过程。递推一般用循环来解决,从已知条件到未知逐渐接近结果;递归一般自己调用自己,从未知到已知,把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。【回答】

5. 一个关于递归的问题

j=r+1 时运行完 begin for i:=1 to r do write(a[i],' '); writeln; end 后肯定不再运行本过程了(本过程中没有后续语句)。
但是它是一个递归调用,它结束本次调用后不是直接结束主程序的运行,而是返回调用处,继续运行该处的后继语句的。

一个关于递归的问题

6. 递归函数通常是用来解决什么问题的?

  递归函数通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:
  (1)边界条件:确定递归到何时终止,也称为递归出口。
  (2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果。
  递归就是某个函数直接或间接地调用了自身,这种调用方式叫做递归调用。说白了,还是函数调用。既然是函数调用,那么就有一个雷打不动的原则:所有被调用的函数都将创建一个副本,各自为调用者服务,而不受其他函数的影响。

7. 递归函数通常是用来解决什么问题的?

递归函数通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:
  (1)边界条件:确定递归到何时终止,也称为递归出口。
  (2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果。
  递归就是某个函数直接或间接地调用了自身,这种调用方式叫做递归调用。说白了,还是函数调用。既然是函数调用,那么就有一个雷打不动的原则:所有被调用的函数都将创建一个副本,各自为调用者服务,而不受其他函数的影响。

递归函数通常是用来解决什么问题的?

8. 求解一道递归的题

递归的操作一般都是这样,列出n个等式然后相加或者想减,消除项目,但这个题,我不知道哪里算错了,你看一下,解题思路就在那里,主要是两次等式的相加操作,