求n的阶乘(递归法和循环法

简介: 根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。

一. 循环法

根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。


#include<stdio.h>
long long Fac(int n)
{
  int i = 0;
  long long ret = 1;
  for (i = 1; i <= n; i++)
  {
  ret *= i;
  }
  return ret;
}
int main()
{
  int num = 0;
  scanf("%d", &num);
  printf("%lld\n", Fac(num));
  return 0;
}


二. 递归法

阶乘规律:当 n=1 时,n!=1 ; 当 n>1 时,n! = n*(n-1)!。利用递归得到最终结果。


#include<stdio.h>
long long Fac(int n)
{
  if (n == 1)
  return 1;
  else
  return n * Fac(n-1);
}
int main()
{
  int num = 0;
  scanf("%d", &num);
  printf("%lld\n", Fac(num));
  return 0;
}

运行结果:

image.png

相关文章
|
算法 C++
C++快速幂(递归)
C++快速幂(递归)
|
2月前
利用递归方法求5!
利用递归方法求5!.
18 9
|
编译器
位运算、递推与递归
位运算、递推与递归
46 0
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
60 0
|
机器学习/深度学习
青蛙跳台阶(递归)
青蛙跳台阶(递归)
97 0
|
机器学习/深度学习 算法 C语言
函数递归+青蛙跳台阶——“C”
函数递归+青蛙跳台阶——“C”
|
C语言
你是真的“C”——函数递归详解青蛙跳台阶
手把手教学——函数递归详解汉诺塔+青蛙跳台阶问题
109 0
你是真的“C”——函数递归详解青蛙跳台阶
【递归】青蛙跳台阶的变式题你还会吗?
【递归】青蛙跳台阶的变式题你还会吗?
123 0
【递归】青蛙跳台阶的变式题你还会吗?
字符串逆序(递归和非递归实现)
给连两个指针,left放在字符串左侧,right放在最后一个有效字符位置。 交换两个指针位置上的字符
|
机器学习/深度学习 人工智能 算法
『递归』汉诺塔和全排列
使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱第2步:2号盘从A柱移至C柱
221 0