使用递归调用,输出整数n的阶乘

使用递归调用,输出整数n的阶乘
使用递归调用,输出整数n的阶乘
使用递归调用,输出整数n的阶乘

img


#include <stdio.h>

// 定义一个函数来计算 n 的阶乘
int factorial(int n) {
    if (n == 0) { // 判断递归结束的条件
        return 1;
    } else {
        return n * factorial(n - 1); // 递归调用自身,直到 n 等于 0
    }
}

int main() {
    int n = 5;
    int result = factorial(n); // 调用阶乘函数
    printf("%d的阶乘是%d\n", n, result);
    return 0;
}

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7593267
  • 这篇博客也不错, 你可以看下输出个位 输入一个整数n,请你输出其个位数
  • 除此之外, 这篇博客: 有向图D长度为n的通路、回路计算,以及连通性判断中的  4、计算长度为n的通路与回路 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 求n-1阶邻接矩阵
    • 对角线元素之和为回路数,所有元素之和为通路数
    void jude2(AMGraph *p,int n)//长度为n的通路、回路
    {
        int i,k,sum=0;
        AMGraph t=*p;
        for(k=0;k<n-1;k++)
        {
            count(p,&t);
        }
    
        for(i=0;i<p->vex;i++)
        {
            sum+=t->arcs[i][i];
        }
        if(sum>0)
            printf("该有向图长度为%d的回路有%d个\n",n,sum);
        else
            printf("该有向图没有长度为%d的回路\n",n);
        sum=0;
        for(i=0;i<p->vex;i++)
        {
            for(k=0;k<p->vex;k++)
            {
                sum+=t->arcs[i][k];
            }
        }
        if(sum>=1)
            printf("该有向图长度为%d的通路有%d个\n",n,sum);
        else
            printf("该有向图没有长度为%d的通路\n",n);
    }
    • 以下回答由chatgpt基于相关博客总结生成:
      def factorial(n):
          if n == 0 or n == 1:
              return 1
          else:
              return n * factorial(n-1)
      
      num = int(input("请输入一个正整数:"))
      result = factorial(num)
      print("{}的阶乘为: {}".format(num, result))
      

      输入样例:

      6
      

      输出样例:

      6的阶乘为: 720