C语言用递归函数求n的阶乘(C语言用函数思想求n的阶乘)

2024-07-22 00:50:07 :37

c语言用递归函数求n的阶乘(C语言用函数思想求n的阶乘)

“c语言用递归函数求n的阶乘”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看c语言用递归函数求n的阶乘(C语言用函数思想求n的阶乘)!

本文目录

C语言用函数思想求n的阶乘

#include 《stdio.h》

// 声明递归函数 factorial,用于计算 n 的阶乘

int factorial(int n);

int main() {

int n;

printf("请输入一个非负整数 n: ");

scanf("%d", &n);

if (n 《 0) {

printf("输入错误!\n");

return -1;

}

printf("%d 的阶乘为 %d\n", n, factorial(n));

return 0;

}

// 定义递归函数 factorial,用于计算 n 的阶乘

int factorial(int n) {

if (n == 0 || n == 1) {   // 边界条件

return 1;

} else {

return n * factorial(n-1);   // 递归调用

}

}

c语言的求n的阶乘的程序代码

用递归法求N的阶乘

程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解.

递归的能力在于用有限的语句来定义对象的无限集合。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

#include 《stdio.h》

#include 《string.h》

#include 《stdlib.h》

long factorial(int n)

{

if(n == 1)

return 1;

else

return n*factorial(n-1);

}

int main(int argc,char *argv)

{

int n = 0;

if(argc != 2)

{

printf("input error,exit!!\n");

return -1;

}

n = atoi(argv);

printf("%d! = %ld\n",n,factorial(n));

return 0;

}

习题示例

题目

题目描述:  

输入一个正整数N,输出N的阶乘。  

输入:  

正整数N(0《=N《=1000)  

输出:  

输入可能包括多组数据,对于每一组输入数据,输出N的阶乘  

样例输入:  

4  

5  

15  

样例输出:  

24  

120  

1307674368000 

AC代码

#include 《stdio.h》 

#include 《stdlib.h》 

#include 《string.h》 

#define MAX 3000 

//存储每次阶乘运算的结果 

int str; 

void calculateFactorial(int n); 

int main() 

int n; 

while (scanf("%d", &n) != EOF) { 

if(n == 0) { 

printf("1\n"); 

} else { 

calculateFactorial(n); 

return 0; 

void calculateFactorial(int n) 

int i, j, temp, c, len; 

memset(str, 0, sizeof(str)); 

str = 1; 

for (i = 2, len = 1; i 《= n; i ++) { //循环与2,3,..n相乘 

for (j = 1, c = 0; j 《= len; j ++) { //str数组代表一个数,模拟与i相乘 

temp = str * i + c; 

str = temp % 10; 

c = temp / 10; 

while(c 》 0) 

str = c % 10; 

c /= 10; 

len = j - 1; 

for (i = len; i 》= 1; i --) { 

printf("%d", str); 

printf("\n"); 

/************************************************************** 

Problem: 1076 

User: wangzhengyi 

Language: C 

Result: Accepted 

Time:2150 ms 

Memory:916 kb 

c语言递归求阶乘

举例:用递归方法求n;

#include《stdio.h》

int main()

{

int n;

int y;

printf("input a integer number:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%d\n",n,y);

return 0;

}

int fac(int n)

{

int f;

if(n《0)

printf("n《0,data error!");

else if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return(f);

}

扩展资料:

return用法:

return返回一个数值的意思就是把return《表达式》后面表达式的值返回给调用他的函数。举个例子:

int sum(int i,int j)

{

return i+j;

printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");

}

main()

{

int a=10,b=11,c;

c=sum(a,b);

printf("%d",c);

}

程序的输出为:

21

这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21就是由sum(a,b)中的return反回来的。

用c语言,利用递归函数求n!,由键盘输入任一整数,求n!

首先明确题目要求:递归函数,求n!

递归函数的含义:

编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。

n!表示阶乘函数,即1*2*3*……*n

下面给出代码:(C语言实现 )

比较简单的尾递归实现:

#include《stdio.h》long digui(int n);  //递归函数声明int main(){int n;  scanf("%d",&n);printf("the result is %ld",digui(n)); //打印出递归值return 0;}long digui(int n)  //递归函数部分{if(n》1)   return n*digui(n-1);   //调用递归,让n与n-1相乘,直到n《1时return 1;   //n《1时,返回1,实现 n*(n-1)*(n-2)*……*3*2*1}

c语言用 递归调用函数 的方法求n的阶乘,要具体解释一下,具体到每一行

手机打的,排版不周,已调试。#includey(x){if(x=0)return1;elesreturnx*y(x-1);}voidmain(){intn,result;printf("请输入n的值:");scanf("%d",&n);result=y(n);printf("%d!=%d\n",n,result);}

OK,关于c语言用递归函数求n的阶乘和C语言用函数思想求n的阶乘的内容到此结束了,希望对大家有所帮助。

c语言用递归函数求n的阶乘(C语言用函数思想求n的阶乘)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.