千家信息网

C语言函数的递归怎么调用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C语言函数的递归怎么调用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言函数的递归怎么调用"吧!一、什么是递归程序调用自身的编
千家信息网最后更新 2026年11月02日C语言函数的递归怎么调用

这篇文章主要讲解了"C语言函数的递归怎么调用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言函数的递归怎么调用"吧!

一、什么是递归

程序调用自身的编程技巧称为递归( recursion) 。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小

递归的两个必要条件:

  • 存在限制条件,当满足这个限制条件的时候,递归便不再继续。

  • 每次递归调用之后越来越接近这个限制条件。

int main(){        printf("hehe\n");        main();        return 0;}

函数自己调用自己,一直打印 "hehe" 但是一会程序自己会停下来。这不是真正的递归,是一个死循环(不满住递归的两个条件)

递归实现:接收一个整型值(无符号),按照顺序打印它的每一位。

例如:

输入:1234

输出:4321

void print(unsigned int n){        if (n > 9)        {                print(n / 10);        }        printf("%d", n % 10);}int main(){        unsigned int num = 0;        scanf("%u", &num);        //递归-函数自己调用自己        print(num);        return 0;}

基本的实现逻辑如图:

写递归代码的时候注意:

  • 不能死递归,都有跳出条件,每次递归逼近跳出条件

  • 递归层次不能太深(可能会栈溢出)

二、递归与迭代

求第n个斐波那契数,(可以递归实现也可以迭代实现)(不考虑溢出)
我们知道像:1,1,2,3,5,8,13,21,34…… 这样第n个数等于第n-1个数加上n-2个数的和的一个数列就是斐波那契数列

  • 递归实现求斐波那契数,直接看代码:

int Fib(int n){        if (n <= 2)                return 1;        else                return Fib(n - 1) + Fib(n - 2);}int main(){        int n = 0;        scanf("%d",&n);        int ret = Fib(n);        printf("%d\n", ret);        return 0;}

当我们求很小的斐波那契数时,计算机计算很快。但是当我们要求的一个很大的,比如第50个斐波那契数,计算机就会算很久(大概要五分钟)。大家可以试一试。

为什么会这么慢呢。因为递归实现效率太低,要重复大量的计算(计算层次太多)。

代码实现的基本逻辑如图:

我们可以看一下代码在计算过程中 n=3(计算第三个斐波那契数) 这一步要执行的次数:

在计算第40个斐波那契数时,要计算三千多万次第三个斐波那契数。可想而知递归实现的效率有多低。而且计算太大还会造成程序崩溃。

  • 循环迭代实现求斐波那契数,直接看代码:

int Fib(int n){        int a = 1;        int b = 1;        int c = 1;        while (n > 2)        {                c = a + b;                a = b;                b = c;                n--;        }        return c;}int main(){        int n = 0;        scanf("%d", &n);        int ret = Fib(n);        printf("%d\n", ret);        return 0;}

循环迭代的方式计算很快

提示:

  • 很多问题是以迭代的形式进行解释的,这只是因为它比非递归的形式更为清晰。

  • 但是很多问题的迭代实现往往比递归实现的效率更低。虽然代码的可读性稍微差些。

  • 当一个问题相当复杂时,难以用迭代实现时,此时递归实现的简洁性便可以补偿它所带来的运行开销。

感谢各位的阅读,以上就是"C语言函数的递归怎么调用"的内容了,经过本文的学习后,相信大家对C语言函数的递归怎么调用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

递归 函数 代码 条件 问题 迭代 程序 语言 个数 效率 过程 学习 循环 限制 复杂 三个 两个 内容 就是 层次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 苏州找大状互联网科技有限公司 美国互联网科技 互联网科技英文 广州宏创互联网科技 成都互联网科技公司 科技创新互联网企业 居家互联网科技有限公司 青海省互联网新科技 宁波青枫互联网科技有限公司 宁夏科技产业互联网案例 天津腾达互联网科技有限公司 沐思想互联网科技有限公司 江苏苏星互联网科技有限公司 上海创道互联网络科技有限公司 全球科技与互联网公司市值变化 中国新注册互联网科技 唐山双旺合互联网科技产业园 众联互联网络科技 互联网科技对化妆品行业 互联网科技会 华中科技大学互联网 睿民互联网科技 万达互联网科技 互联网科技公司做什么 互联网科技机房 上海万顺科技互联网有限公司招聘 山东蛋芒互联网科技有限公司 宁波允成互联网科技有限公司 武汉亿视互联网科技有限公司
0