递归实现累加求和

本节主要进行的时一项利用递归实现的简单操作——累加求和。累加求和可以通过循环实现,且时间会比利用递归实现大大的节省。但在代码量上,递归实现会比循环实现更加简洁。只能说各有优劣吧!

代码实现

     核心函数(就是一个简单的递归调用,应该没啥好说的吧,哈哈哈哈)

int add(int i)
{
	int isum;
	printf("加到%d\r\n",i);
    if(i<=0)
    {
    	return 0;
	}
	else
	{
		isum=add(i-1)+i;
		return isum; 
	}
} //of add

   测试函数

void test()
{
		int n, sum;
    printf("测试开始!\r\n");

	n = 5;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);

	n = 1;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);

	n = -1;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);


    printf("测试结束!\r\n");
}

完整版

#include
int add(int i)
{
	int isum;
	printf("加到%d\r\n",i);
    if(i<=0)
    {
    	return 0;
	}
	else
	{
		isum=add(i-1)+i;
		return isum; 
	}
} //of add

void test()
{
		int n, sum;
    printf("测试开始!\r\n");

	n = 5;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);

	n = 1;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);

	n = -1;
	sum = add(n);
    printf("\r\n0 adds to %d gets %d.\r\n", n, sum);


    printf("测试结束!\r\n");
}

int main()
{
	test();
	return 0;
}

感悟

   用递归和循环都实现了一遍后,可以发现,二者其实非常相似。那么递归实现,本质是否就是循环逻辑呢?查了一些资料后,发现并不是这样的。虽然我们定义了一个函数,且用的就是它本身,但是我们没有用函数本身定义该函数的一个特定的实例。也就是说通过f(n)得到f(n)才是循环逻辑,但是通过f(n-1)得到f(n)并不是循环逻辑,除非使用f(n-1)的求值又要用到对f(n)的求值。

你可能感兴趣的:(学习)