前言
- 本博文的代码基于VC++6.0开发调试;
- 递归函数是C语言的一大特点,也是C语言的一个重要知识点;
- 递归函数往往遵循着公式(例如等比数列,等差数列等);
- 最重要了解递归的这么一个思想;
什么是递归函数
从功能上来看:递归函数是一个函数,C语言中,每个函数都代表一个独立的功能;递归函数当然也是一个功能函数;
从形式上来看:一种函数被自己本身调用的函数;
注意:递归虽说是函数本身调用自己,但是本身这个函数不应该是无穷无尽的在执行,所以这里要借助条件语句进行根据实际情况结束函数;
递归过程:回溯和递推 (利用等差数列的求第n项数值来说明)
回溯:从未知值的项,通过某种数学函数关系,追溯到已知项的值;
递推:得到初始值后,通过函数关系求出未知项值;
例如求等数列的第n项数值,回溯是:我们并不知道第n项,n-1项,n-2项 …… 2项的数值,但是知道第1项的数值,这样,就得到了数学公式的初始值;递推是:得到了已知项的值,通过数学公式计算出所要求的项的值;
等差数列说明递归函数
问题:一共五个同学,已知第一位同学的年龄是10岁,第二位同学的年龄比第一位大2岁,第三位同学的年龄比第二位大2岁……第五位同学的年龄比第四位同学大2岁;利用键盘输出同学的编号,查询这位同学的年龄;
所以这里有一个等差数列关系,函数关系式如下:
age_1 = 10; (n=1)
age_n = age_n-1+2; (n>1)
代码:
#include <stdio.h>
void main()
{
int age(int n);
int n;
printf("请输入学生编号:");
scanf("%d",&n);
printf("这位学生的年龄是:%d\n",age(n));
}
int age(int n)
{
int age_value;
if(n == 1)
age_value = 10;
else
age_value = age(n-1)+2;
/*上面这至关重要,是递归的核心,在整个程序执行过程中,大致的运算过程可以理解为: age(5)==age(age(age(age_value+2)+2)+2)+2;(这个式子就是递归的思想) */
return age_value;
}
程序执行过程:
总结:
(1) 回溯过程中,公式中的age(n)的值是未知的;递推过程中的age(n)的值则是已知的;
(2) 回溯过程中相邻的两个方框是嵌套关系,后者嵌套在前者函数内;递归过程中,相邻两个方框也是嵌套关系,内嵌函数返回值给外函数;
运行结果:
今天的文章C语言递归函数分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30256.html