以多种不同的思想实现1+2+...+n的求和
程序员文章站
2024-02-04 08:31:16
...
[思路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;
}
上一篇: Input & output VI
下一篇: 求3个数字的全排列并输出
推荐阅读
-
以多种不同的思想实现1+2+...+n的求和
-
利用PPT放映功能实现隐藏幻灯片页面以实现播放不同的幻灯片内容
-
Word中以VBA实现的自动翻页功能与文档结构图显示不同步
-
如何在ROS的不同版本间进行切换以实现共存效果
-
两种方法实现对不同颜色的单元格进行求和 筛选+SUBTOTAL
-
php实现1到100求和的不同实现方式
-
php实现1到100求和的不同实现方式
-
以面向对象的思想,编写自定义类描述图书信息。设定属性包括:书名,作者,出版社名,价格;设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问
-
如何用css实现页面底部展示不同的分页效果?(多种样式示例)
-
Word中以VBA实现的自动翻页功能与文档结构图显示不同步