社区
C语言
帖子详情
1+2+3+...+n 的算法怎么写啊?
jock_521
2003-09-26 09:12:05
1+2+3+...+n 的算法怎么写啊?昨天的面试的时候没有写出来!请大吓,帮帮
...全文
2639
48
打赏
收藏
1+2+3+...+n 的算法怎么写啊?
1+2+3+...+n 的算法怎么写啊?昨天的面试的时候没有写出来!请大吓,帮帮
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
48 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangchaobj
2003-09-28
打赏
举报
回复
首先,用递归完全没必要,再程序运行上没有错误,但在设计上是错误的。递归是要压栈的,犯的上么?
用循环也不好,太慢了。
这种能用O(1)实现的问题没必要用O(n)来实现,没什么可讨论的。
xdspower
2003-09-28
打赏
举报
回复
用for就是递归了
yushang0824
2003-09-28
打赏
举报
回复
这个公司是不是有点问题,不知道他想干什么呀?
为了提高你的想象力?
summer6074
2003-09-27
打赏
举报
回复
除了公式,只怕最想考的就是那个整数大小,还是用数组吧,高程教材好象有个差不多的
晨星
2003-09-27
打赏
举报
回复
我猜面试人想要的可能是arfi()的算法。
xdspower
2003-09-27
打赏
举报
回复
其实如果是编程的话,要作一些测试的,比如n是否有效等,这是编程的基本原则之,否则没有人敢用你的代码的。
还要考虑溢出等
n*(n+1)/2这个公式是有效的
sunhaifeng
2003-09-27
打赏
举报
回复
n*(n+1)/2
minghui000
2003-09-27
打赏
举报
回复
int AddNumber(int b)
{
int i;
int sum =0 ;
for(i=1;i<=b;i++)
sum = sum + i;
return sum;
}
jgfchy
2003-09-27
打赏
举报
回复
我想很有可能是考当n过大超出长整型时的处理吧。不过哪为大虾能给我解释一下用数组存的原理,我没接触过这种方法啊。谢谢啦。
laZZe
2003-09-27
打赏
举报
回复
恩,是可以用n*(n+1)/2,答案是丰富多采的嘛,不过我原来我在学c语言时,在书上看到过这个例题,不过书上的意思是让用for语句做,我想他的意思可能也是这样吧?
existsluawjb
2003-09-27
打赏
举报
回复
用tc3.0啊
#include <stdio.h>
void main()
{
int i,n,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+i;
printf("%d,sum);
}
yongming520
2003-09-26
打赏
举报
回复
greatly agree with hackingtruth(尘封)
Nemo1314
2003-09-26
打赏
举报
回复
to hackingtruth(尘封)
你说的理由我看最有可能了!
n超过了存储范围。
建议用数组做!
scuthdd
2003-09-26
打赏
举报
回复
最后这个好啊
buzhiming99
2003-09-26
打赏
举报
回复
先用数学公式得到sum = n*(n+1)/2
int sum(int i)
{
return i*i(i+1)/2;
}
fatefit
2003-09-26
打赏
举报
回复
同意chijiao(赤脚) :
因为他分析的才是真正的考虑问题。其他人都是片面的。
jianshen77
2003-09-26
打赏
举报
回复
这个题目很奇怪,如果考算法高中就知道了高斯的天才。
可能主要就是考超出长整数标识的范围是如何考虑的!
不考虑这些,用一般的计算方法比如用for循环,可能
空间与时间效率上都不入的规巴!
int factorial(int i){
return (i>1)? (factorial(i-1)+i):1;
}
CsdnPlayer
2003-09-26
打赏
举报
回复
为什么sum=n*(n+1)/2的效率高?
iJoy
2003-09-26
打赏
举报
回复
同意 ONCE(深海幽蓝) 等仁兄,强烈建议用等差数列求和公式sum=n*(n+1)/2;
即使输入数字过大,以至于用到数组计算也没有关系,因为一样可以用数组算一步乘法。
laZZe
2003-09-26
打赏
举报
回复
这个是我写的程序,你看看,可以实现输入n值,求前n项的和的运算~~
main()
{
int sum;
int n;
clrscr(); /*这个函数用来清屏*/
printf("please input n:");
scanf("%d",&n);
sum=fun(n);
printf("sum=%d",sum);
}
int fun(int m)
{
int i,sum=0;
for(i=1;i<=m;i++)
sum=sum+i;
return sum;
}
加载更多回复(28)
尹成JAVA高并发
算法
掌握数据结构和
算法
,可称为
算法
工程师!这是成为架构师的基础,有Google
算法
大神亲授。我保证你可以
写
出时空复杂度都很优的架构。有人专门答疑哟!你想要成为架构工程师吗?立即点击报名按钮吧! 北上广容不下肉身...
C语言:编
写
一个程序,求s=1+(1+2)+(1+2+3)+....+(1+2+3+....+n)的值。
/*编
写
一个程序,求s=1+(1+2)+(1+2+3)+....+(1+2+3+....+n)的值*/ #include <stdio.h> int main() { int i,n,sum=0,result=0; printf("input n:\n"); scanf("%d",&n); for(i=1;i<=n;i++) { sum+=i; resul...
C++--求1+2+3
+...+
n=?
1+2+3+…+n=? 题目 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C) 方法(递归) #include<iostream> using namespace std; //利用短路求值 与操作 int sum(int n) { int x=n; x&&(x+=sum(n-1)...
c语言实现1到n的累加,1+2+3+.....+n的累加计算,使用不同方法实现,输出格式为1+2+3+....+(n-1)+n
c语言实现1到n的累加,1+2+3+.....+n的累加计算,使用不同方法实现,输出格式为1+2+3+....+(n-1)+n 整数的累加 C语言入门编程学习
用C语言实现1+2+3+4+5+.....+n的累加
问题描述:用C语言实现1+2+3+4+5+…+n的累加。 这里有两种方法可以借鉴。 方法一:使用for循环。具体代码如下: #include<stdio.h> int add(int n){ int i,sum=0; for(i=1;i<=n;i++){ sum=sum+i; } return sum; } int main(){ int n,s; prin...
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章