[思路1(使用基本的递归思想完成计算)]
#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n);
/* */
int main()
{
int n;
printf("Please input n:");
scanf("%d", &n);
if(n >= 1)
{
printf("sum=%lu\n", Sum(n));
}
else
{
printf("data error!\n");
}
/* */
return 0;
}
/* 递归求和函数 */
unsigned long Sum(unsigned int n)
{
if(n == 1)
{
/* 递归的终止条件 */
return 1;
}
else
{
/* 递归的一般条件 */
return n + Sum(n - 1);
}
}
[思路2(使用尾递归思想完成计算)]
#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n, unsigned long S);
/* */
int main()
{
int n;
printf("Please input n:");
scanf("%d", &n);
if(n >= 1)
{
printf("sum=%lu\n", Sum(n, 0));
}
else
{
printf("data error!\n");
}
/* */
return 0;
}
/* 尾递归求和函数 */
unsigned long Sum(unsigned int n, unsigned long S)
{
S = S + n;
if(n == 1)
{
return S;
}
else
{
return Sum(n - 1, S);
}
}
[思路3(使用迭代思想完成计算)]
#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n);
/* */
int main()
{
int n;
printf("Please input n:");
scanf("%d", &n);
if(n >= 1)
{
printf("sum=%lu\n", Sum(n));
}
else
{
printf("data error!\n");
}
/* */
return 0;
}
/* 迭代求和函数 */
unsigned long Sum(unsigned int n)
{
unsigned int j = 1;
unsigned long S = 0;
while(j <= n)
{
S = S + j;
j ++;
}
return S;
}