求C语言编程: 使用递归实现奇数之和1+3+5+ … 或偶数之和2+4+6+ … 。

3. 使用递归实现奇数之和1+3+5+ … 或偶数之和2+4+6+ … 要求:
d) 如果从键盘上输入的n是奇数则计算奇数之和,输入的n是偶数则计算偶数之和;
e) 当输入的n值小于或等于0,则要求重新输入正确的值。
提示:计算奇数之和、计算偶数之和可以使用2个递归函数来实现。
好的话会附加悬赏

#include<stdio.h>
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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-25
#include<stdio.h>
#include<math.h>

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);
}
第2个回答  推荐于2017-10-29
#include<stdio.h>

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));
}本回答被提问者采纳
第3个回答  2011-11-25
#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));
}
计算奇数偶数之和只需一个递归函数就行,程序简单很多,如果你非要用两个的话,很容易,追问一下,我给你
第4个回答  2011-11-25
#include<stdio.h>
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;
}
相似回答