科技颠覆者 发表于 2024-11-12 18:10:40

用函数实现模块化程序计划三

函数的嵌套调用

C语言的函数定义是互相平行的、独立的,也就是说,在定义函数时,一个函数内不能再定义另一个函数,也就是不能嵌套定义,但是可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数
https://img2024.cnblogs.com/blog/3512406/202411/3512406-20241112190826170-2087710026.png
如上执行过程:

[*]执行 main 函数
[*]碰到函数调用的语句,调用函数 a ,流程转到 a 函数
[*]执行 a 函数
[*]碰到函数调用的语句,调用函数 b ,流程转到 b 函数
[*]执行 b 函数
[*]b 函数执行完毕,返回 a 函数,继续执行 a 函数
[*]a 函数执行完毕,返回 main 函数,继续执行 main 函数
[*]main 函数执行完毕,程序竣事
函数的递归调用

在调用一个函数的过程中又出现直接或间接的调用该函数自己,称为函数的递归调用
C语言的特点之一就在于答应函数的递归调用
https://img2024.cnblogs.com/blog/3512406/202411/3512406-20241112193446830-1781366482.png
代码:
//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;
}运行结果:
https://img2024.cnblogs.com/blog/3512406/202411/3512406-20241112194830116-890853160.png
例:用递归法求 n!
//f(n) = f(n - 1) * n

#include <stdio.h>
#include <stdlib.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));

        system("pause");
        return 0;
}运行结果:
https://img2024.cnblogs.com/blog/3512406/202411/3512406-20241112195328325-1676949726.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 用函数实现模块化程序计划三