当前位置:编程学习 > C/C++ >>

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文件放到一个二维数组中?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,