在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

#include <stdio.h>

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!的主要内容,如果未能解决你的问题,请参考以下文章

C语言 递归程序 求解

使用递归函数编程实现求20!的结果

如何在matlab中利用函数的递归调用求n!

C语言你编程:用递归方法实现对一个整数 的 逆序输出

C语言编程:用函数递归法求Fibonacci数列的前n项·

递归(C语言)