c语言函数调用 递归函数问题求解
用递归调用方法实现如下任务:给你大于0的整数n,求出sum(n)=1+2+…+n=?
要求:
(1)编写求和的递归函数;
(2)在主函数中,从键盘输入n的值,调用递归函数,并且输出sum(n)的值,请用“sum(%d)=%d”的格式输出,其中第一个%d是n的具体取值,第二个%d是求和的值。
补充:这是我写的 错哪了 老说 not a function 什么意思?
#include <stdio.h>
void main()
{
int total(int n);
int y,n;
printf("请输入一个正整数:\n");
scanf("%d",&n);
y=total(n);
printf("%5d\n",n,y);
}
int total(int n)
{
int y;
scanf("5d%",&n);
if (n < 0)
printf("请输入正数\n");
if(n==1)
y=1;
printf("%5d",y);
if(n>1)
y= n + y( n - 1 );
printf("%5d",y);
}
答案:是递归循环的错误: y= n + y( n - 1 );
上式是错的!调用函数可以放到主函数后面,那没关系的!我自己写了一个程序,如下:
#include<stdio.h>
int total(int n)
{if(n==1)
return(1);
else
return(n+total(n-1));
}
main()
{int n,s;
scanf("%d",&n);
s=total(n);
printf("sum(%d)=%d\n",n,s);
}
其他:#include <stdio.h>
int sum(int n)
{
if (n < 0)
{
return 0;
}
return n + sum( n - 1 );
}
int main(int argc, char* argv[])
{
printf("Enter n:");
int n = 0;
scanf("%d", &n);
printf("sum(%d)=%d\n", n, sum(n));
return 0;
}
把total函数的定义放在main的前面 #include <stdio.h>
void main()
{
int total(int n);
int y,n;
printf("请输入一个正整数n:\n");
scanf("%d",&n);
y=total(n);
printf("%d\n",y);
}
int total(int n)
{
if(n==1)
return 1;
else
return total(n-1)+n;
}
上一个:c语言程序
下一个:如何用C语言将一个txt文件放到一个二维数组中?