百度
360搜索
搜狗搜索

递归函数c语言例题,c语言题:用递归法求20个阶乘详细介绍

本文目录一览: 用c语言,利用递归函数求n!,由键盘输入任一整数,求n!

//利用递归函数求n!,由键盘输入任一整数,求n!#include

unsigned long jc(unsigned long n){ if(n==1) return 1; else return n*jc(n-1);}int main(){ unsigned long n; while(scanf("%ld",&n) != EOF) { printf("%ld\n",jc(n)); } return 0;}

#include

#include

inline int _rec(int n){ if (n == 1) return 1; else return n*_rec(n - 1);}int main(void){ int n = 1; printf("n="); scanf("%d", &n); printf("%d\n", _rec(n)); system("pause"); return 1;}

【C语言の不懂,抄个加法供参考。编写程序,用递归函数完成,求整数1+……+n的和】

#include

int sum(int);

int main() {

int n;

scanf("%d", &n);

printf("1+...+%d = %d", n, sum(n));

return 0;

}

int sum(int x) {

if(x==1) {

return 1;

}

else {

return x+sum(x-1);

}

}

fun(int i)

{

if (i==0)

return 1;

else

return i*fun(i-1);

}

需要计算的数字传递进来就可以了

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

递归函数的含义:

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

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

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

比较简单的尾递归实现:

#include

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语言 函数递归调用的简单例子

=#include

/// 求阶乘函数

/// 递归思想

/// n! = n * (n-1) * (n-2) * ... * 1

/// n! = n * [(n-1) * (n-2) * ... * 1]

/// n! = n * (n-1)! 递归方程

/// 这是递归实现

unsigned Factorial(unsigned int n)

{

if (n == 0) return 1; // 对于0的阶乘,当n=0时,递归返回

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

}

void main()

{

int n = 3;

printf("3! = %d",Factorial(n));

}

# include

void f(int n)

{

printf("调用函数f(%d)\n",n);

if (n==1)

printf("当n==%d时结束调用!\n",n);

else

f(n-1);

}

int main(void)

{

f(5);

return 0;

}

/*

----

调用函数f(5)

调用函数f(4)

调用函数f(3)

调用函数f(2)

调用函数f(1)

当n==1时结束调用!

-----

*/

int multi(int a)

{

if(a==1)

return 1;

else

return a*multi(a-1);

}

void main()

{

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

}

n的阶乘运算,递归实现。

举一个用递归调用函数求输入非负整数的阶乘的例子,如下:

//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int fact(int n){ if(n==1 || n==0) return 1; else return n*fact(n-1);}int main(void){ int x; while(1){ printf("Input x(int 12>=x>=0)...\nx="); if(scanf("%d",&x),x>=0 && x<=12)//x>12时会使结果溢出 break; printf("Error,redo: "); } printf("%d! = %d\n",x,fact(x)); return 0;}

C语言关于递归的一个题:下面是代码

i=5,程序运行时调用palin函数,函数内部判断传入参数是否小于等于1,不小于1,函数自己调用自己,参数减1,如此循环,直到参数小于等于1时退出。这就是递归的方法。

C语言编程题 用递归法实现:对于一个正整数n(n是一个不超过8位的任意正整数,由键盘输入),(1)

#include

int i = 0;

void fun(long n)

{

++i;

if(n < 10)

{

printf("%d", n);

return ;

}

else

{

fun(n/10);

printf(", %d", n%10);

}

阅读更多 >>>  include是什么意思,英语单词 include是什么意思

}

int main()

{

long num;

scanf("%ld",&num);

fun(num);

printf("\ntotal=%d\n", i);

return 0;

}

#include

int cnt = 0;void func(int n){ ++cnt; if(n < 10){ printf("%d", n); return ; } else{ func(n/10); printf(", %d", n%10); }}int main(){ cnt = 0; func(5678932); printf("cnt = %d", cnt); return 0;}

#include

int f(int n){ int a,b; if (n == 0)return 0; a = n % 10; b=f(n/10); printf("%d ", a); return b+1;}int main(){ int n; scanf_s("%d", &n); printf("\n%d\n", f(n));}

【希望能对你有帮助】

// 递归函数

static void __numeric_infor(int vlaue,int *num)

{

if (vlaue == 0) {

return ;

} else {

*num += 1;

__numeric_infor(vlaue / 10,num);

printf("%d ",vlaue % 10);

}

}

static void numeric_infor(int value)

{

int num = 0 ;

__numeric_infor(value,&num);

printf("\n%d \n",num);

}

int main()

{

int value ;

scanf("%d",&value);

numeric_infor(value);

return 0;

}

求高手解决一道c语言题目{编写一递归函数fac用来求阶乘t!。主函数调用该函数,求20!}急!!!。

#include
"stdio.h"
/*这是求解函数,返回一个数的阶乘*/
long
fac(long
i)
{
if(i
<
2)
return
1;
else
return
i*fac(i-1);
}
void
main()
{
long
num;
scanf("%ld",&num);
/*由用户控制输入*/
printf("fac(%ld):%ld\n",num,fac(num));
}
#include

#include

double

fac(int

n)

{

if(n==1)return

1;

else

return

fac(n-1)*n;

}

int

main()

{

int

n;

scanf("%d",&n);

printf("%d!=%.0lf\n",n,fac(n));

//因为20!已经超出了int的最大值,故用double型,输出的时候输出整数位

return

0;

}

用C语言的函数递归方法来求

#include

#include

void fun2(int m) {

for (int i = 2; i <= m / 2; i++) {

if (m % i == 0)

printf("%d ",i);

}

}

void fun1(int m) {

int i;

for (i = 2; i * i <= m; i++)

if (m % i == 0)

break;

if (i * i > m)

printf("%d is a prime number", m);

else

fun2(m);

}

int main() {

int n;

scanf("%d", &n);

fun1(n);

return 0;

}

#include

#include

void fun2(int m)

{

int k=0,a[10];

for(int i=2;i
<m;i++)
if(m%i==0)

a[k++]=i;

for(int i=0;i
<k;i++)
{

printf("%d",a[i]);

if(i!=k-1)

printf(",");

}

}

void fun1(int m)

{

if(m<2)

printf("%d is a prime number",m);

for(int i=2;i*i<=m;i++)

if(m%i==0)

fun2(m);

else

printf("%d is a prime number",m);

}

int main( )

{ int n;

scanf("%d",&n);

fun1(n);

return 0;

}
</k;i++)
</m;i++)

C语言编程题 用递归函数实现一组数的平均数

#include

#include

float avg(float *p, int num,int _size);

void main(void)

{

int size=0;

while(1)

{

printf("输入一个正整数:\n");

scanf("%d",&size);

if (size>0)

break;

}

float *p=NULL;

p=(float*)malloc(size*sizeof(float));

if (NULL==p)

exit(0);

int i;

for (i=0;i
<size;i++)
scanf("%f",&p[i]);

printf("该组数的平均数为:\n");

printf("%f",avg(p,size,size));

printf("\n");

free(p);

p=NULL;

}

float avg(float *p, int num,int _size)

{

if (0==num)

return 0;

else

return (p[num-1]/_size+avg(p,num-1,_size));

}

double avg(double* num,int size)

{

if(size==1)return num[0];

num[size-2]=(num[size-2]+num[size-1])/2.0;

return avg(num,size-1);

}

void main()

{

double num[10]={...............};

double result = avg(num,10);

...

}

#include

阅读更多 >>>  PHP中实现代码重用的两个函数

int di(int n)

{

int i=1;

if(n==1)

return n;

else

return n*di(n-1) ;

}

int main()

{

int n;

scanf("%d",&n);

printf("%d\n",di(n));

}

</size;i++)

c语言题:用递归法求20个阶乘

#include

long long func(unsigned long long n)

{

if (0 == n)

return 1;

if (1 == n)

return 1;

else

return n * func(n-1);

}

int main()

{

printf("20! = %lld\n", func(20));

return 1;

}

#include "stdio.h"double jc(double n){ if(n>1) return jc(n-1)*n; else return 1;}int main(){ double i; for(i=0;i<=20;i++) printf("%.0lf\n",jc(i)); }再给一个完全用递归的:#include "stdio.h"double jc(double m,double n){ if(m>1) { if(n>1) { if(m==n) printf("%.0lf\n",jc(m,n-1)*n); else return jc(m,n-1)*n; } else { if(m>0) jc(m-1,m-1); return 1; } } else { printf("1\n"); }}int main(){ double s[20],m; m=20; jc(m,m); }

用c语言编写一个递归函数“int FF(int a【】,int n)”,求出数组a中所有n个元素之积并返回

int FF(int a[],int n)
{
if(n<=0)return 1;//实际上n<0的时候是非法的,这样需要抛出异常,或者调用的地方保证参数正确
return a[0]*FF(&a[1],n-1)
}
int ff(int a[], int n)
{
if (n <= 0) return 0;
if (n == 1)
return a[0];
else
{
return a[0] * ff(a+1, n - 1);
}
}
int ff(int a[],int n)
{
if(n<=0) return 0;
if(n==1 return a[0])
else return a[n]*ff(a[],n-1);
}
int abc(int a[],int n)
{
if(n==0)
return a[0];
else return a[n-1]*abc(a[],n-2);
}
或:
int ff(int a[],int n)
{
int sum=0;
int i
for(i=0;i
<n;i++)
{

sum+=a[i];

}

return sum;

}

扩展资料:

数组类型说明 在C语言中使用数组必须先进行类型说明。

数组说明的一般形式为:类型说明符 数组名 [常量表达式],……; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

数组就是一次性定义相同数据类型的一组变量数组定义。

参考资料来源:百度百科-数组
</n;i++)

网站数据信息

"递归函数c语言例题,c语言题:用递归法求20个阶乘"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:递归函数c语言例题,c语言题:用递归法求20个阶乘的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!