1.代码
#include <stdio.h>
/**
*Recursive addition.
*/
int addTo(int paraN){
int tempSum;
printf("entering addition(%d)\r\n",paraN);
if(paraN <= 0){
printf("return 0\r\n");
return 0;
}else{
tempSum = addTo(paraN - 1) + paraN;
printf("return %d\r\n",tempSum);
return tempSum;
}//of if
}//of addTo
/**
* A clear version.
*/
int clearAddTo(int paraN){
if(paraN <= 0){
return 0;
}else{
return clearAddTo(paraN - 1) + paraN;
}//of if
}//of clearAddTo
/**
*Test the AddTo function.
*/
void addToTest(){
int n,sum;
printf("--addToTest begins.--\r\n");
n = 5;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d\r\n",n,sum);
n=1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d\r\n",n,sum);
n = -1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d\r\n",n,sum);
printf("--addToTest ends.--\r\n");
}//of addToTest
/**
*The entrance.
*/
void main(){
addToTest();
}//of main
2.运行结果
3.小结
递归累加算法是一种基于递归思想的算法,用于求解一系列数的累加和。
递归累加算法的实现通常涉及以下步骤:
定义递归函数:首先,我们需要定义一个递归函数,该函数将接收一个参数列表(如数组或链表),并返回这些参数的累加和。
递归终止条件:接下来,我们需要确定递归的终止条件。这通常是当参数列表为空或只包含一个元素时,直接返回该元素(如果非空)或0(如果为空)。
递归调用:在递归函数中,我们将问题分解为更小的子问题。对于累加算法,这通常意味着从参数列表中移除一个元素,并递归地调用自身来处理剩余的列表。