您当前的位置:首页 > 互联网教程

c语言中,什么是函数的递归,能举个例子么

发布时间:2025-05-13 10:22:16    发布人:远客网络

c语言中,什么是函数的递归,能举个例子么

一、c语言中,什么是函数的递归,能举个例子么

所谓递归,说的简单点,就是函数自己调用自己,然后在某个特定条件下。结束这种自我调用。

如果不给予这个结束条件,就成了无限死循环了。这样这个递归也就毫无意义了。

分析可以看出, i表示第几个数, n表示该数的值

int fun(int n)//这里的n代表第几个数

return fun(n- 1)+ fun(n- 2);//这里就是自己调用自己,形成循环自我调用。

注:以上代码只是用来演示递归,不包含错误校验。

在实际生产过程中。该代码不够健壮。

如此,就完成了递归。你就可以求得第n个数了。

当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。

二、c语言:采用递归方法实现将输入的字符串按反序输出

1、以下是使用递归方法实现将输入字符串按反序输出的 C语言程序:

2、//递归函数,将字符串 str按反序输出

3、 if(*str=='\0'){//判断是否到达字符串结尾

4、 printReverse(str+ 1);//递归调用,输出下一个字符

5、 printf("%c",*str);//输出当前字符

6、 printf("请输入一个字符串:");

7、在上述代码中,我们首先定义了一个递归函数 `printReverse`,该函数接受一个指向字符串的指针作为参数。在函数内部,我们首先判断当前指针所指向的字符是否为字符串结尾,如果是,则直接返回;否则,我们递归调用该函数,并传入指向下一个字符的指针,以实现按反序输出字符串。最后,我们输出当前字符。

8、在 `main()`函数中,我们首先使用 `scanf()`函数获取用户输入的字符串,并将其保存到字符数组 `str`中。然后,我们调用 `printReverse()`函数,并传入指向字符串开头的指针,以开始递归输出过程。最后,我们在输出结束后添加换行符,以使输出更加美观。

9、需要注意的是,在实际应用中,递归函数可能会导致栈溢出等问题,因此需要控制递归深度,以确保程序的健壮性和安全性。另外,也可以使用其他方法(如循环)来实现字符串反转的算法。

三、c语言函数的递归调用

1、这段程序的意思是对传来的参数n,如果n<1,程序会崩溃;如果n>1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)

2、比如说做了5次递归,即n=5;执行的操作如下:

3、第1次调用(n=5),定义了一个intc;

4、第2次调用(n=4),定义了一个intc;

5、第3次调用(n=3),定义了一个intc;

6、第4次调用(n=2),定义了一个intc;

7、低5次调用(n=1),定义了一个intc;

8、n=1时,满足了条件n==1,故此时c=10;

9、第5次返回,此时第5次定义的c=age(intn)=10;前4次定义的intc没有值,下同

10、第4次返回,此时第4次定义的c=age(intn)+2=10+2=12

11、第3次返回,此时第3次定义的c=age(intn)+2=12+2=14

12、第2次返回,此时第2次定义的c=age(intn)+2=14+2=16

13、第一次返回,此时第一次定义的c=age(intn)+2=16+2=18。此时按下面的程序b接收了返回值

14、我觉得你应该注意的是age(intn)本身就代表一个int值,就算没有参数接收也可以参与到运算当中,就像这个例子一样。