首页 理论教育 C语言程序设计教程:递归调用实例

C语言程序设计教程:递归调用实例

时间:2023-10-23 理论教育 版权反馈
【摘要】:在调用一个函数的过程中,可以直接或间接地调用该函数本身,称为递归调用。图6-8例6-8的运行结果上面的程序在执行时,主调函数main()调用函数f3,程序流程转到f3函数中执行。若n<0或n=0或n=1都将结束函数调用,并返回到main()函数中;若n>1则对f3函数进行递归调用。f3函数共被调用6次,其中f3是被main()函数调用,其他5次是f3函数自己调用自己,即递归调用。

C语言程序设计教程:递归调用实例

在调用一个函数的过程中,可以直接或间接地调用该函数本身,称为递归调用。主调函数又是被调函数,如果递归的过程没有一定的终止条件,程序就会陷入类似死循环一样的情况,最终导致内存缓冲区溢出的错误,因此,在编写递归函数时,必须有一个结束递归过程的条件,用来保证递归过程在某种条件下可以结束。

【例6-8】编写程序,求n!。

【分析】使用递归方法来求n!,即10!=10×9!,9!=9×8!,…,2!=2×1!,1!=1,由此归纳为以下公式。

其中,当n为0或1时就是结束递归调用的条件。

(www.xing528.com)

例6-8 运行视频

程序运行结果如图6-8所示。

图6-8 例6-8的运行结果

【说明】上面的程序在执行时,主调函数main()调用函数f3,程序流程转到f3函数中执行。若n<0或n=0或n=1都将结束函数调用,并返回到main()函数中;若n>1则对f3函数进行递归调用。输入n的值为6,在main()函数中的调用语句是y=f3(6),第一次调用,因为n>1执行s=f3(n-1)*n,即s=f3(6-1)*6,该语句对f3函数进行第二次调用即f3(5),按这样的方式一直调用到f3(1)为止,不再继续调用而开始逐层返回,f3(1)的返回值是1,f3(2)的返回值是1*2=2,f3(3)的返回值是2*3=6,依次类推,直到f3(6)的返回值是120*6=720。f3函数共被调用6次,其中f3(6)是被main()函数调用,其他5次是f3函数自己调用自己,即递归调用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈