函数调用#
今天学习了函数的使用方法,了解到函数的调用方法有递归与非递归两种方法。
函数的非递归调用也就是迭代法,即循环的使用;也是我们最容易理解和使用的一种方法,但是这种方法可能会耗时,工作效率不高。
因此,我们主要学习的是函数的递归调用,也是我们需要重点掌握的一种方法。
函数的递归调用也就是自身调用自身的方法;
它必须要满足以下两个条件:
(1)函数自己调用自己;
(2)有一个终止条件。
递归调用里的递和归都是动词,对于程序执行的过程来说,先一步步调用自身向下递下一步要执行的内容,直到满足最后的终止条件的时候,再一步步的向前返回当前的结果得到最终的结果(即归的过程)。
总的来说,函数递归调用的过程就是先递后归,直至得到最终的结果为止,函数递归调用的过程才算完全结束。并且递归调用的代码要比非递归的代码要短很多,计算机运行起来也会更快,耗时自然就少了,工作效率也会有所提高。
但是,对于初学者来说,函数的递归调用真的不太好理解,一开始学起来可能会很有难度,所以也就需要耗费更多的时间来研究和学习函数递归调用的实质和方法。
坚持就是胜利,学习就是一个坚持的过程,只有不断坚持,克服一个个困难才能成为最后的强者,为了自己的目标继续前行吧!
附上阶乘使用函数递归调用完成的代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int Fac(int n)
{
if (n > 1)
{
return n*Fac(n - 1);
}
return n;
}
int main()
{
int n = 0;
printf("输入一个数: ");
scanf("%d", &n);
int num = Fac(n);
printf("%d\n", num);
return 0;
}
对于这个程序来说,假设我们输入的数字是5,进入函数,对数字进行判断5>1,得到5*Fac(4),在判断4>1,得到4*Fac(3),再去判断3>1,得到3*Fac(2),判断2>1,得到2*Fac(1);此时1不大于1,开始返回1,向上一步归得到2*1,在向上一步归得到3*2*1,在向上一步归得到4*3*2*1,在归一步就得到5*4*3*2*1,就得到了5的阶乘,再回到主函数将Fac函数得到的5的阶乘的结果打印出来,程序整体结束。
以上就是阶乘使用函数递归调用的总过程。
对于函数部分就是不断调用自身,直到满足终止条件时开始返回每一步的结果,直至得到最终的结果,函数递归调用过程结束,得到最终答案,打印出最后结果,这个程序就算完成。