什么是递归函数?

2024-05-13 18:36

1. 什么是递归函数?

递归式解决逻辑问题的。基本思想是::把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。
C有一个汉诺塔,就是非用递归才能解决的一个问题。
利用递归算法解题,首先要对问题的以下三个方面进行分析: 
一、决定问题规模的参数。需要用递归算法解决的问题,其规模通常都是比较大的,在问题中决定规模大小(或问题复杂程度)的量有哪些?把它们找出来。 

二、问题的边界条件及边界值。在什么情况下可以直接得出问题的解?这就是问题的边界条件及边界值。 

三、解决问题的通式。把规模大的、较难解决的问题变成规模较小、易解决的同一问题,需要通过哪些步骤或等式来实现?这是解决递归问题的难点。

什么是递归函数?

2. 函数递归

讲解吗:
那给你讲一下。
比如  求一个数的阶乘  n! 在数学上这个是要一步步算的,怎么算呢,这样
  n!=1*2*3*4*5*...*n  也就是从1乘到n  但是你会发现  从1乘到n-1是什么呢,是不是(n-1)!  这就有意思了,要求的n!势必要先算到(n-1)!然后再乘上一个n就得到n!,那也就是说n!=(n-1)!*n。这更有意思了,本来我要求n!,反而在展开中也出现了和我n!形状类似的(n-1)!,这是怎么回事呢。这就是如果我假定有一个函数是用来求n!,那么函数的内部是需要用到(n-1)!*n表达式的。可是我现在就是在写这个函数的啊,怎么函数里面居然提前用到了这个函数。现在你明白了吗,这就是函数的递归。

简单点,就是求一个问题的时候,需要依赖这个问题的另一个量的结果的这么个问题。
如求n!,需要依赖知道n-1的阶乘。可是(n-1)!其实与n!原理一样,都是那么个求法,只不过问题的规模量不同而已,一个是n,一个是n-1.

3. 什么是递归函数?举例


什么是递归函数?举例

4. 递归函数是什么


5. 递归函数问题

解题步骤:

1,ack(1,n)=ack(0,ack(1,n-1))+1=ack(1,n-1)+1;

由递推式得:ack(1,n)=n+1;

2,ack(2,n)=ack(1,ack(2,n-1))=ack(2,n-1)+2; 
 //递推式

  由递推式得:ack(2,n)=2n+3;

3,ack(3,n)=ack(2,ack(3,n-1))=2*ack(3,n-1)+3; //递推式

  即:ack(3,n)+3=2(ack(3,n-1)+3)

  得: ack(3,n)+3=(ack(3,1)+3) * 2^(n-1);

  又ack(3,1)=2ack(3,0)+3

    ack(3,0)=a(2,1)=5

  所以ack(3,1)=13;

  所以 ack(3,n)=2^(n+3) -
 3;

所以:ack(3,3)=61;

PS:
这个是著名的Ackerman(阿克曼)函数,典型的非原始递归的递归函数,m<=3的时候像我上面的递推和计算很简单,但是一旦再大就会很麻烦,甚至计算机会彻底无法计算。
可以参考wiki资料了解相关内容:
http://zh.wikipedia.org/zh-cn/%E9%98%BF%E5%85%8B%E6%9B%BC%E5%87%BD%E6%95%B8

递归函数问题

6. 函数递归问题

有用。递归的概念尤其是在编程领域很实用,举个简单的例子:比如你要搜索某个路径下面所有的图片或者音乐文件,那么你就要用到递归,因为你搜索的路径下面既有文件夹又有文件。比如搜某个文件夹下面的文件函数为SearchFile(String path),那么在这个函数实现里面遇到新的文件夹,就得再次调用函数SearchFile(String path),经典的函数递归。

7. 递归函数怎么写

if()语句中,条件判断是个“逻辑表达式”。逻辑表达式的结果只有2个:假(0)或者真(1)。那条语句:
if (n) {...}就是利用了这一点:当 n > 0时,为“真”;当n<=0时,为“假”。
printn(n-1);只是把n-1作为参数,递归调用了自己。并不等于:
n = printn(n-1);希望我说明白了。有问题继续交流,谢谢。

递归函数怎么写

8. 递归函数的介绍

在数理逻辑和计算机科学中,递归函数或μ-递归函数是一类从自然数到自然数的函数,它是在某种直觉意义上是可计算的 。事实上,在可计算性理论中证明了递归函数精确的是图灵机的可计算函数。递归函数有关于原始递归函数,并且它们的归纳定义(见下)建造在原始递归函数之上。但是,不是所有递归函数都是原始递归函数 — 最著名的这种函数是阿克曼函数。其他等价的函数类是λ-递归函数和马尔可夫算法可计算的函数。 一个含直接或间接调用本函数语句的函数被称之为递归函数,在上面的例子中能够看出,它必须满足以下两个条件:1) 在每一次调用自己时,必须是(在某种意义上)更接近于解;2) 必须有一个终止处理或计算的准则。例如:梵塔的递归函数  //Cvoid hanoi(int n,char x,char y,char z){if(n==1)move(x,1,z);else{hanoi(n-1,x,z,y);move(x,n,z);hanoi(n-1,y,x,z);}}阶乘的递归函数,公式如下:  //C++int Factorial(int n){if(n==0||n==1)return 1;elsereturn n * Factorial(n-1)}