递归函数

一、什么是递归函数

  • 递归函数:函数中调用了自己的函数
  • 递归函数不等于循环函数,
  • 递归典型例子:用递归函数计算阶乘、求斐波那契数列
#include <stdio.h>
int main(void)
{
        int a=5;
        printf("%d的阶乘是:%d.\n",a,jiecheng(a));
        return 0;
}
int jiecheng(int n)
{
        if(n<1)
        {
                printf("n必须大于等于1.\n");
                return -1;
        }
        if(n==1)
        {
                return 1;
        }
        else
        {
                return (n*jiecheng(n-1));
        }
}

二、函数的递归调用原理

  • 实际上递归函数是在栈内存上递归执行的,每次递归执行一次就会耗费一些栈内存。
  • 栈内存的大小是限制递归深度的重要因素。

三、使用递归函数的原则:收敛性、栈溢出

  • 收敛性就是:递归函数必须有一个终止递归的条件。当每次函数被执行时,判断一个条件决定是否继续递归,这个条件最终必须能够被满足。如果没有递归终止条件或者这个条件永远不会被满足,则这个递归没有收敛性。
  • 因为递归是占用栈内存的,必须在栈内存耗尽之间结束递归。否则就会栈溢出。
  • 递归函数的使用具有一些风险,必须把握好终止条件。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容