前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数(五)(函数的嵌套与递归调用)

函数(五)(函数的嵌套与递归调用)

作者头像
pigeon
发布2022-04-11 17:58:23
1.5K0
发布2022-04-11 17:58:23
举报
文章被收录于专栏:电子荣耀

函数的嵌套调用

C语言的函数定义是互相平行和独立的,但函数的调用是可以嵌套的,也就是说,在调用一个函数的过程中,又去调用另外一个函数。

例:编写程序,使用函数嵌套定义计算 1! + 2! + 3! + … + n!。

参考代码:

代码语言:javascript
复制
#include <stdio.h>
    long fac(int n);
   long sum(int n);
    int main()
    {
        printf("1!+2!+3! = %ld\n", sum());
        printf("1!+2!+3!+4! = %ld\n", sum());
        printf("1!+2!+3!+4!+5! = %ld\n", sum());
        return ;
   }
 /* fac函数计算n! */
   long fac(int n)
   {
       long f = ;
       int i;
       for(i=; i<=n; i++)
       {
           f = f * i;
       }
       return f;
   }
 /* sum求1! + 2! + 3! + … + n! */
   long sum(int n)
  {
       int i;
       long s = ;
      for(i=; i<=n; i++)
       {
          s = s + fac(i);  
       }
       return s;
   }

结果示例:

函数的递归调用

递归是指函数直接或间接的调用自己的过程。C语言的特点之一就是允许函数的递归调用,即在函数体中直接或间接的调用函数自身。如果一个函数直接调用了自己,称为直接递归;如果一个函数调用了其他函数,而被调用的函数又调用了主调函数,则称为间接递归。

递归调用的函数在定义时需要满足两个条件:

(1) 有一个或多个终止状态,即最简单的情况,用于结束递归调用。

(2) 每次递归调用都必须简化当前问题的求解,使问题越来越接近终止状态,最终达到终止状态。

特别强调,如果递归方法定义时没有恰当的满足上面两个条件,可能会造成无限递归,最终使内存资源耗尽而中止程序。

例:使用函数递归调用实现将一个正整数输出其二进制形式,例如,输入10,输出1010

思路分析:将十进制的正整数转换成其二进制形式输出,可以采用“除2取余,逆序排列”方法。具体方法是,用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位,后得到的余数作为二进制数的高位,依次排列起来。

参考代码:

代码语言:javascript
复制
 #include <stdio.h>
  void dtob(int n);
  int main()
  {
      printf("10的二进制形式: ");
      dtob(10);
      printf("\n");
      printf("100的二进制形式: ");
      dtob(100);
     printf("\n");
     printf("255的二进制形式: ");
     dtob(255);
     printf("\n");
       return 0;
   }

  void dtob(int n)
   {
       if(n/2 > 0)
       {
           dtob(n/2);
       }
       printf("%d", n%2);
   }

结果示例:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数的嵌套调用
  • 函数的递归调用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档