递归函数c语言求和,1-100用c语言的递归法求和
递归函数c语言求和,1-100用c语言的递归法求和详细介绍
本文目录一览: 1-100用c语言的递归法求和
#include
int sum(int n)
{
if (n==1) return 1;
else return n+sum(n-1);
}
int main(){
int i=100;
printf("%d\n",sum(100));
return 0;
}
void a()
{static int sum=0,n=1;
sum=sum+n;
n++;
if(n<=100)
a();
else printf("%d",sum);
}
1、首先本题的思路已经给出,要求用递归算法。
2、程序源代码如下:
#include
int sum(int n);
int main()
{
int i=100;
printf("1~%d的和为:\n",i);
printf("%d\n",sum(100));
return 0;
}
//下面是一个递归求和函数
int sum(int n)
{
if (n==1)
return 1;
else
return n+sum(n-1);
}
3、程序的输出结果如下:
C语言怎样用递归方法编写程序 求s=1!+2!+3!+...10!
#include
int n,t=1,s=0;
void sum_fac(int k)
{if(k<=n)
{s+=t;
t*=k;
sum_fac(k+1);
}
}
int main ()
{ scanf("%d",&n);
sum_fac(1);
printf("%d\n",s);
return 0;
}
下面是测试的结果:
测试结果
思路:先通过程序获得阶乘的值,之后再将阶乘相加,求阶乘时和相加时都用递归的写法
首先是求阶乘:
int factorial(int index){
int sum = 0;
if (index == 1){
sum = 1;
}else{
sum = index * factorial(index-1);
}
return sum;
}
之后再求和:
int add_recursion(int maxnum){
int sum = 0;
if (maxnum == 1){
sum = factorial(maxnum);
}else{
sum = factorial(maxnum) + add_recursion(maxnum-1);
}
return sum;
}
下面是完整的代码:
完整代码
提供思路,如果使用递归,主要针对阶乘,因此,在主函数里提供十个数相加,用循环,然后重新定一个函数,在函数里提供递归的算法,即不断调用直至结束得到结果,然后相加就行。
如果不是使用递归,可使用上一次的结果乘以新增的数字,然后依次相加即可。
c语言用递归法求1!+2!+3!+4!+5!+6!
main函数调用的时候n传6就是求到6!的和了。
#include "stdafx.h"
#include
long fac[7]={0};//定义存储阶乘的全局数组
int getFac(int n){//递归求阶乘
if(fac[n]!=0)return fac[n];
else if(n==1){
fac[1]=1;return fac[1];
} else if return fac[n]=n*getFac(n-1);
}
int getSum(int n){//递归求和
if(n<0)return -1;//输入n非法
if(n==0) return 0;
else return getFac(n) + getSum(n-1);
}
int main(int argc, char* argv[])
{
printf("1!+2!+3!+4!+5!+6!=%d\n",getSum(6));//调用
return 0;
}
#include
int f(int x){
if(x==1) return 1;
return x*f(x-1);
}
int main()
{
int sum=0;
for(int i=1;i<=6;i++)
{
sum=sum+f(i);
printf("f(%d)=%d\n",i,f(i));
}
printf("sum=%d",sum);
return 0;
}
void main()
{int sum=0;
int temp=1;
for(int n=1;n<7;n++)
{
for(int m=1;n
<m+1;m++)
{
temp*=m;
}
sum+=temp;
temp=1;
}
printf("1!+2!+3!+4!+5!+6!=%d",sum);
}
// fac的作用是求i的阶乘
int fac(int i)
{
if(i == 1)
return 1;
else
return i*fac(i-1);
}
int main()
{
int i = fac(1)+fac(2)+fac(3)+fac(4)+fac(5)+fac(6);
}
private int f(int n)
{
if(n==1)
return 1;
if (n > 1)
return n * f(n - 1) ;
return 0;
}
int main()
{
int s=0;
for(int i=1;i<=6;i++)
s+=f(i);
printf("%d",s);
}
思路:先用递归求出一个数的阶乘,接着for循环累加求和。
参考代码:
#include
int fun(int n){ if(n==1) return 1;//递归结束条件 return n*fun(n-1);//递归式 } int main(){ int sum=0,i; for(i=1;i<=6;i++)//for循环累加求和 sum+=fun(i); printf("%d\n",sum); return 0;}/*运行结果:873*/
</m+1;m++)
C语言 递归求和
#include
int sum(int n)
{int x;
scanf("%d",&x);
if(n==1)return x;
return x+sum(n-1);
}
int main()
{int i,k,a[100];
for(i=0;1;i++)
{
scanf("%d",&k);
a[i]=sum(k);
if(k==1&&a[i]==-1)break;
}
for(k=0;k<=i;k++)
printf("%d\n",a[k]);
return 0;
}
递归 1到n 求和 C语言
//递归求和函数long sum(long);
long sum(long n)
{
if(n!=1)
return sum(n-1)+n;
return 1;
}
long
power(int
n)
{long
f;
if(
n>1&&n<101)
f=n+power(n-1);
else
f=1;
return(f);
}
main()
{int
n=100;
long
y;
y=power(n);
printf("%ld",y);
}
int fun(int n){
if(n==1)
return 1;
else
return n+fun(n-1);
}
#include
long sum(int n){
if(n)
return sum(n-1)+n;
return 0;
}
main(){
int n;
scanf("%d",&n);
printf("%ld\n",sum(n));
}
long power(int n)
{long f;
if( n>1&&n<101)
f=n+power(n-1);
else f=1;
return(f);
}
main()
{int n=100; long y;
y=power(n);
printf("%ld",y);
}
#include "stdio.h"
main()
{int i,sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf("%d",sum);
}
这个是简单的求1~100的和的小程序,如果你需要N为更大的数那么把程序中的100换成你需要的数就可以,希望能帮你的忙!
C语言用递归方式求n个数的和
#include
#define N 10
double a[N];
double add(double b,int i)
{
if(i)
return b+add(a[i-1],i-1);
return a[0];
}
void main()
{
int i;
printf("enter n numbers:\n");
for(i=0;i
<n;i++)
scanf("%lf",&a[i]);
printf("The result:%lf\n",add(a[N-1],N-1));
}
改变N的值既可以实现任意个数的相加。
#include
#include
using
namespace
std;
int
add(int
n);
int
main()
{
int
i=100;
int
b;
b=add(100);
cout<
<b<<endl;
}
int
add(int
n)
{
if(n==1)
return
1;
else
return
n+add(n-1);
},利用add()函数进行递归,这是个从1加到n的递归函数
#include
#include
using
namespace
std;
int
add(int
n);
int
main()
{
int
i=100;
int
b;
b=add(100);
cout<
<b<<endl;
}
int
add(int
n)
{
if(n==1)
return
1;
else
return
n+add(n-1);
},利用add()函数进行递归,这是个从1加到n的递归函数
累加:#include
void main ()
{
int s=0,i;
for(i=1;i<=100;i++)
s+=i;
printf("%d\n",s);
}
#include "stdio.h"
int num(int n)
{
int t;
if(n==1)
return 1;
else
{ t=n+num(n-1);
return t;
}
int main()
{
int n;
scanf("%d",&n); 输入你想要的累加的最大的数
printf("%d",num(n));
}
#include
#include
using namespace std;
int add(int n);
int main()
{
int i=100;
int b;
b=add(100);
cout<
<b<<endl;
}
int add(int n)
{
if(n==1)
return 1;
else
return n+add(n-1);
},利用add()函数进行递归,这是个从1加到n的递归函数
</b<<endl;
</b<<endl;
</b<<endl;
</n;i++)
那位高手用C语言编到程序,递归函数求和,输入N个数出其和求
#include
int s=0;
main()
{
int sum(int n);
int n;
printf("please input n:"); /*输入要输数的个数*/
scanf("%d",&n);
sum(n);
printf("sum = %d\n",s);
}
int sum(int n)
{
int m;
if(n==0)return 0;
else
{
printf("please input a num:");
scanf("%d",&m);
s+=m;
return sum(n-1);
}
}
#include
int ni(int n)
{
int s,a;
if(n==0) return 0;
else
{
scanf("%d",&a);
s=ni(n-1)+a;
}
return(s);
}
main()
{
int a,s;
printf("请输入相加的个数 n:\n");
scanf("%d",&a);
s=ni(a);
printf("sum=%d\n",s);
}
求C语言编程: 使用递归实现奇数之和1+3+5+ … 或偶数之和2+4+6+ … 。
#include
#include
void main()
{
int sum(int n);
int k;
printf("请输入一个数字\n");
for(;;)
{
scanf("%d",&k);
if(k<1)
{
printf("请输入一个正确的数字\n");
}
else
break;
}
sum(k);
printf("sum=%d\n",sum(k));
}
int sum(int n)
{
if(n<1)
return(0);
else if(n==1)
return(1);
else
return n+sum(n-2);
}
#include
int f(int i){
int sum=i;
if(i>0) sum+=f(i-2);
return sum;
}
int F(int i){
int sum=i;
if(i>0) sum+=f(i-2);
return sum+1;
}
void main(){
int n,sum;
loop:
printf("请输入一个数:\n");
scanf("%d",&n);
if(n<0) goto loop;
else if(n%2==0) printf("%d\n",sum=f(n));
else printf("%d\n",sum=F(n));
}
#include "stdio.h"
int sum(int n)
{
if (n==1||n==2)
return n;
else return n+sum(n-2);
}
void main()
{
int n;
printf("请输入n的值: \n");
scanf("%d",&n);
while (n<=0)
{
printf("输入错误,请重新输入n的值: \n");
scanf("%d",&n);
}
printf("结果为:%d\n",sum(n));
}
计算奇数偶数之和只需一个递归函数就行,程序简单很多,如果你非要用两个的话,很容易,追问一下,我给你
#include
int fun(int );
void main()
{
int n,sum;
while(scanf("%d",&n)!=EOF) //直到你输入ctrl+z或者关闭程序才结束
{
if(n<=0)
{
printf("输入有误,请重输");
}
else
{
sum=fun(n);
printf("%d\n",sum);
}
}
}
int fun(int n)
{
int sum=n;
if(n>1)
sum+=fun(n-2);
return sum;
}
一个就可以实现!!!!!!!!!!!!!!!
#include
int sumn(int n){if(n<3)return n; return n+sumn(n-2);}int main(){int n; scanf("%d",&n); printf("%d\n",sumn(n)); return 0;}