在C语言中用递归调用的方法求n!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中用递归调用的方法求n!相关的知识,希望对你有一定的参考价值。
请“老师”把过程详细的写的下,在解释一下。谢谢 谢谢 谢谢 非常之感谢。
#include <stdio.h>int Func(int n)
if(n < 2)
return 1;
else
return n*Func(n-1);
int main()
int n = 5;
printf("n! = %d\n",Func(n));
return 0;
执行过程:
-》Func(5)
-》5*Func(4)
-》5*(4*Func(3))
-》5*(4*(3*Func(2))))
-》5*(4*(3*(2*Func(1))))
当n为0的时候停止递归,返回结果
由于遇到1的时候返回1,那么Func(1)=1
所以结果是5*(4*(3*(2*1))) = 120 参考技术A int fun(int x)
if(x==1)return 1;
else return fun(x-1)*x;
void main()
printf("%s\n",fun(30));
因为n=n*(n-1)!
所以主要思想是这样,如果要求的n值为1,则返回1
否则返回n*(n-1)! 参考技术B 求n的阶乘,递归,参考代码如下:
#include<stdio.h>
double fac(int n)
if(n<=1)
return 1;
return fac(n-1)*n;
int main()
printf("%.0lf",fac(100));
参考技术C int getn(int n)
if (n == 2)
return 2;
else
return n * getn(n-1);
参考技术D double JieCheng(double n)
if (n <= 1)
return 1;
return n * JieCheng(n - 1);
C语言你编程:用递归方法实现对一个整数 的 逆序输出
输入输出 示例:
Enter a number:12345
54321
void printData(int data)
if (data==0)
return;
printf("%d",data%10);
printData(data/10);
int main()
int data;
printf("Enter a number:");
scanf("%d",&data);
printData(data);
printf("\n");
return 0;
程序如上,可以运行。 参考技术A #include <stdio.h>
#include <stdlib.h>
void print_order_number(unsigned number)
printf("%d",number%10);fflush(NULL);
if ( number >= 10 )
print_order_number(number/10);
int main(int argc, char**argv)
if ( argc != 2 )
printf("Usage: rev_print <integer> \n");
exit(0);
unsigned number = atol(argv[1]);
print_order_number(number);
return 0;
以上是关于在C语言中用递归调用的方法求n!的主要内容,如果未能解决你的问题,请参考以下文章