最简单的问题1+2+3+...+100。。。

linqhaonan 2010-06-05 10:13:53
最简单的问题1+2+3+...+100。。。

不过要用LINQ来做
...全文
823 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdzwj 2010-06-06
  • 打赏
  • 举报
回复
可以充分利用编译器,运行速度最快的实现


#include <stdio.h>
#include <conio.h>

template <int N> struct Sum
{
enum { result = N + Sum<N-1>::result};
};

template <> struct Sum<0>
{
enum {result = 0};
};

int main(int argc, char* argv[])
{
printf("Sum<100> = %d\n",Sum<100>::result);
_getch();
return 0;
}
  • 打赏
  • 举报
回复
都写好了 只有jf了
zboyed 2010-06-06
  • 打赏
  • 举报
回复
学习一下 还没有用过LINQ 呵呵 支持 支持
Ivony 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 sp1234 的回复:]
引用 21 楼 ivony 的回复:
这个只在a==……

呵呵,那就改为

VB.NET code
Module Module1

Sub Main()
Dim a = 1
Dim b = 100
Console.WriteLine("sum({0}...{1})={2}", a, b, Enumerable.Rang……
[/Quote]


汗,才发现我改错地方了。。。。。
JERAYLEE 2010-06-06
  • 打赏
  • 举报
回复
100后面还有数吗?
hhc123 2010-06-06
  • 打赏
  • 举报
回复
等差数列
li45214521 2010-06-06
  • 打赏
  • 举报
回复
(首项+尾项)*项数/2
linqhaonan 2010-06-06
  • 打赏
  • 举报
回复
wuyazhe 到这里拿分! http://topic.csdn.net/u/20100606/20/9b396480-3be7-480d-8770-bfd7b3ae7fec.html
sp1234 到这里拿分! http://topic.csdn.net/u/20100606/20/1a0c2ddc-69cc-4053-86f6-eee0a9a992af.html

感谢你们长期以来的帮助,以及这个帖子的精彩回答,一人送上100分。
兔子-顾问 2010-06-06
  • 打赏
  • 举报
回复
膜拜IU大神,c++也懂。
Ivony 2010-06-06
  • 打赏
  • 举报
回复
如果用元编程,还不如直接printf( "1+...+100=5050" );算了
让爱延续 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 li45214521 的回复:]
(首项+尾项)*项数/2
[/Quote]
呵呵
我姓区不姓区 2010-06-06
  • 打赏
  • 举报
回复
Iv又冒出来了……
重新上任版主吧,我做的比你差远了……
HappyKeKe 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 ivony 的回复:]
如果用元编程,还不如直接printf( "1+...+100=5050" );算了
[/Quote]


呵呵 这个好
jesterjy 2010-06-05
  • 打赏
  • 举报
回复
int sum = (1 + 100) * 100 / 2;

比循环速度快。呵呵。
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ivony 的回复:]
这个只在a==……
[/Quote]
呵呵,那就改为
Module Module1

Sub Main()
Dim a = 1
Dim b = 100
Console.WriteLine("sum({0}...{1})={2}", a, b, Enumerable.Range(a, b - a + 1).Sum())
Console.ReadKey()
End Sub

End Module


其实我的意思是想说明vb.net完全支持Linq了,本来想说明一下lamda中如何表达function,可惜这个题目太简单了,没有法子说明。
Ivony 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
哦,sorry,写繁琐了。应该是

VB.NET code
Module Module1

Sub Main()
Dim a = 1
Dim b = 100
Console.WriteLine("sum({0}...{1})={2}", a, b, Enumerable.Range(a, b).Sum())
……
[/Quote]

这个只在a==1才成立。
改为:

Console.WriteLine("sum({0}...{1})={2}", a, b - a + 1, Enumerable.Range(a, b).Sum())
皇城龙三 2010-06-05
  • 打赏
  • 举报
回复
不好意思,没看清题目,Linq的上面给出的答案是对的
Teng_s2000 2010-06-05
  • 打赏
  • 举报
回复

Func<int, int> add = null;
add = n => add(n - 1) +n;
Console.WriteLine(add(6));
xk1126 2010-06-05
  • 打赏
  • 举报
回复
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum = sum + i;
}
Console.WriteLine(sum);
看来我的最简单!~
哈哈!~ 5
aimeast 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 aimeast 的回复:]

C# code
static void Main(string[] args)
{
//这里要注意!!
//必须要先赋值后才可以进行递归定义。否则会编译出错
Func<int, int> fac = null;
fac = (x => x == 0 ? 1 : x * fac(x - 1));
for (int i = 0; i ……
[/Quote]这是阶乘的例子,求和改成加号
加载更多回复(16)

110,544

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧