千家信息网

C语言中函数递归的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍C语言中函数递归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是递归?递归(recursion):程序调用自身的一种编程技巧。如何理解函数递归:1
千家信息网最后更新 2026年11月04日C语言中函数递归的示例分析

这篇文章主要介绍C语言中函数递归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

什么是递归?

递归(recursion):程序调用自身的一种编程技巧。

如何理解函数递归:

1.从调用自身层面:函数递归就是函数自己调用自己。

2.从编程技巧层面:一种方法(把一个大型复杂的程序转换为一个类似的小型简单的程序),这种方法的主要思想就是把大事化小。

递归的两个必要条件

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

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

递归实例

实例1(按照顺序打印一个数的整形值)

参考代码(可以先去尝试是否可以解决问题)

画图讲解

注意:在每次打印后都有一个空格。

程序运行结果

完整代码

#include void print(int n){if(n>9){print(n/10);}printf("%d ", n);}int main(){int num = 1234;print(num);return 0;}

实例2 (使用函数在不创建变量的情况下求字符串长度)

参考代码

画图讲解

程序运行结果

完整代码

#include <stdio.h>int Strlen(const char* str){if (*str == '\0')return 0;elsereturn 1 + Strlen(str + 1);}int main(){char* p = "abcd";int len = Strlen(p);printf("%d\n", len);return 0;}

递归与迭代

迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。 每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值。 目前对于c语言来说,迭代可以简单认为是循环结构。

对于递归与迭代,我们同样通过两个实例来理解:

实例1 (求n的阶乘)

方法一(使用递归)

参考代码

通过数学方法讲解

完整代码

#include int fac(int n){        if (n == 1)                return 1;        else                return n * fac(n - 1);}int main(){        int n = 0;        scanf("%d", &n);        int ret = fac(n);        printf("%d\n", ret);        return 0;}
方法二(使用迭代)

完整代码

#include int main(){        int n = 0;        scanf("%d", &n);        int i = 0;        int ret = 1;        for (i = 1; i <= n; i++)        {                ret *= i;        }        printf("%d\n", ret);        return 0;}

运行结果

实例2 (求解斐波那契数列)

斐波那契数列:指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

方法一 (递归求解)

参考代码

通过数学方法求解

运行结果

完整代码

#include 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;}

注意:当求得的数字较大时,使用递归的方法计算机所要计算的量是相当大的,因为每次计算一个第n项时都需要计算第n-1项和第n-2项 ,这里我们通过求解第40项来观察fib(3)的计算次数来观察。

运行结果

计算第40项时已经计算第3项已经有三千多万次,那么如果计算第一百项,一千项...时程序就会崩溃...这是我们就要考虑使用迭代的方法进行求解。

方法二(迭代求解)

参考代码 (主函数不变)

画图讲解

完整代码

#include 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;}

运行结果

这里我们可以看出递归和迭代的运行结果是一样的,但是迭代的运行速度要更快。

这时候我们会想:

为什么有时候用递归简便,而有时候用迭代简便呢?

注意:

1.许多问题是以递归的形式进行求解的,这只是因为它比非递归的形式更加清晰。

2.但是这些问题的迭代实现往往比递归实现效率更高,虽然可读性差些。

3.当一个问题相当复杂时,此时递归实现的简洁性便可以弥补它所带来的运行开销。

以上是"C语言中函数递归的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

递归 迭代 代码 方法 结果 运行 函数 实例 程序 参考 数列 条件 问题 语言 数学 限制 示例 分析 复杂 简便 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 互联网科技工作委员会副主任毛军 新华互联网科技学院 青岛互联网科技公司 上海致骋互联网科技 青海省互联网新科技 玖二柒互联网科技公司待遇 中国互联网有什么科技含量 厦门比较好的科技互联网公司 彤创互联网科技有限公司 荆州市昕露互联网络科技有限公司 千方科技属于互联网企业吗 互联网科技人工智能实验室 烟台灵鸽互联网科技有限公司 互联网方面的科技前沿 上海京穆互联网科技有限公司 每天都有哪些好的互联网科技 互联网科技股为什么大涨 工业互联网科技创业 易租星互联网科技有限公司 云信互联网科技有限公司 互联网科技革命 狮子座互联网科技有限公司 新华互联网科技2019 互联网科技创新服务 深圳市优智互联网科技有限公司 版纳互联网科技选哪家 山东蛋芒互联网科技有限公司 互联网科技大佬云集 如何强化互联网金融科技
0