函数的嵌套调用以及函数的递归调用
函数的嵌套调用
C语言的函数定义是互相平行的、独立的,也就是说,在定义函数时,一个函数内不能再定义另一个函数,也就是不能嵌套定义,但是可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数
如上执行过程:
- 执行 main 函数
- 遇到函数调用的语句,调用函数 a ,流程转到 a 函数
- 执行 a 函数
- 遇到函数调用的语句,调用函数 b ,流程转到 b 函数
- 执行 b 函数
- b 函数执行完毕,返回 a 函数,继续执行 a 函数
- a 函数执行完毕,返回 main 函数,继续执行 main 函数
- main 函数执行完毕,程序结束
函数的递归调用
在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用
C语言的特点之一就在于允许函数的递归调用
//f(x) = f(x - 1) + 2
#include <stdio.h>
int func(int index)
{
if (1 == index)//递归结束条件
return 10;
return func(index - 1) + 2;//开始递归
}
int main(void)
{
printf("%d\n", func(5));
return 0;
}
运行结果:
例:用递归法求 n!
//f(n) = f(n - 1) * n
#include <stdio.h>
long long func(int n)
{
if ((1 == n) || (0 == n))//递归结束条件
return 1;
return func(n - 1) * n;//开始递归
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%lld\n", func(n));
return 0;
}
在VS编译器内会报C4996错误,解决见下文:
运行结果:
本文来自博客园,作者:EricsT,转载请注明原文链接:https://www.cnblogs.com/EricsT/p/18542527
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)