Sum numbers recursively

Quark's Avatar, Join Date: Dec 2010
Newbie Member
I have been brushing up on recursion. I have a typical problem here. I want to sum up all the numbers between two bounds.The end bounds are included in the sum. I have here a small program to the do the above. Except it goes into infiinite loop. Here is the listing:

Code:
#include <stdio.h>

int sum(int a,int b)
{
	if(a>=b)
		return 0;
	result= a+sum(++a,b);
	return result;
}

int main()
{
	int i,j,r=0;
	printf("Enter the range: ");
	scanf("%d %d",&i,&j);
	printf("The result is :",sum(i,j));
	getch();
	return 0;
}

Last edited by shabbir; 13Dec2010 at 15:51.. Reason: Code blocks
k1e1g1's Avatar, Join Date: Dec 2010
Newbie Member
I'm new to this, but I believe it's because you did not define 'result'. If you were to define it as an int, that may solve your problem.
Alternately, you could leave result out all together and just
return a+sum(++a,b);
Quark's Avatar, Join Date: Dec 2010
Newbie Member
Actually I removed the result altogether ......... still the same result.
Quark's Avatar, Join Date: Dec 2010
Newbie Member
#include <stdio.h>
#include <conio.h>

int sum(int a,int b)
{
if(a>=b)
return 0;
return a+sum(++a,b);
}

int main()
{
int i,j,r=0;
printf("Enter the range: ");
scanf("%d %d",&i,&j);
printf("The result is :",sum(i,j));
getch();
return 0;
}

##########Still loops infinitely##############
jimblumberg's Avatar
Ambitious contributor
The following code:
Code:
return a+sum(++a,b);
Is your problem. The ++a in this position is undefined.

Code:
int temp = sum(++a,b)
return a+temp;
See this link: Sequence points

Jim
Quark's Avatar, Join Date: Dec 2010
Newbie Member
I solved this problem this way.

int inc(int a)
{
return ++a;
}


#include <stdio.h>

int sum(int a,int b)
{
if(a>=b)
return 0;
result= a+sum(inc(a),b);
return result;
}

int main()
{
int i,j,r=0;
printf("Enter the range: ");
scanf("%d %d",&i,&j);
printf("The result is :%d",sum(i,j));
getch();
return 0;
}