递归函数c语言例题,c语言题:用递归法求20个阶乘
递归函数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);
}
}
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
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++)