最简单的问题1+2+3+...+100不过要用LINQ来做

解决方案 »

  1.   

    数组
    var q= (from a in lst
                          select a)
                           .Sum();
    var q = db.User.Select(o => o.A).Sum();
      

  2.   

    Y算子实现的1+...100
    delegate T SelfApplicable<T>(SelfApplicable<T> self);
    private static void FixedPoint()
    {
        SelfApplicable<Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>>>
        Y = y => f => x => f(y(y)(f))(x);    Func<Func<Func<int, int>, Func<int, int>>, Func<int, int>> Fix = Y(Y);    Func<Func<int, int>, Func<int, int>>
        F = fac => x => x == 0 ? 0 : x + fac(x - 1);    Func<int, int> factorial = Fix(F);    Console.WriteLine(factorial(100));}
      

  3.   

    递归 
    #include   <stdio.h> 
    int   add(int   n){ 
    if(n==0)return   0; 
    return   (add(n-1)+n); 
    } void   main() 

    printf( "%d ",add(100)); 

      

  4.   

    LINQ?Enumerable.Range( 1, 100 ).Sum();只是为了说明这个题目的无聊。当然最zhuangbility的写法是那个Y组合子。
      

  5.   

    Linq比较简单,例如用vb.net写:Module Module1    Sub Main()
            Dim a = 1
            Dim b = 100
            Console.WriteLine("sum({0}...{1})={2}", a, b, Aggregate x In Enumerable.Range(a, b) Into Sum())
            Console.ReadKey()
        End SubEnd Module
      

  6.   


    // ADD.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"int fnSum(int max,int min)
    {
    int i =max* (max /2) +(max /2);
    return i;
    }
    int main(int argc, char* argv[])
    {
    int j=0;
    for (int i =0;i <=100;i++)
    {
    j=j +i;
    }
    printf("Sum[%d]",j);
    printf("sum2[%d]",fnSum(100,1));
    return 0;
    }
      

  7.   

    哦,sorry,写繁琐了。应该是Module Module1    Sub Main()
            Dim a = 1
            Dim b = 100
            Console.WriteLine("sum({0}...{1})={2}", a, b, Enumerable.Range(a, b).Sum())
            Console.ReadKey()
        End SubEnd Module
      

  8.   

    呵呵,刚刚看到#7楼已经写了。其实这个题目来考Linq确实太简单了。
      

  9.   

    这个msdn的例子太复杂了。还是看我的例子吧
    《更简洁的使用lambda递归》
    http://blog.csdn.net/aimeast/archive/2010/03/12/5375239.aspx
      

  10.   

    static void Main(string[] args)  
    {  
        //这里要注意!!  
        //必须要先赋值后才可以进行递归定义。否则会编译出错  
        Func<int, int> fac = null;  
        fac = (x => x == 0 ? 1 : x * fac(x - 1));  
        for (int i = 0; i < 10; i++)  
        {  
            Console.WriteLine("{0} : {1}", i, fac(i));  
        }  
    }  
      

  11.   

      static void Main(string[] args)
            {
               
    int i;
    int sum;
    sum=0;
    for(i=1;i<=100;i++){
    sum+=i;
    }
    Console.WriteLine("1+2+3+...+100="+sum);
    Console.ReadLine();
    }
            }简单的实现
      

  12.   

    int sum = 0;
                for (int i = 1; i <= 100; i++)
                {
                    sum = sum + i;
                }
                Console.WriteLine(sum);
    看来我的最简单!~
    哈哈!~ 5
      

  13.   


                Func<int, int> add = null;
                add = n => add(n - 1) +n;
                Console.WriteLine(add(6));
      

  14.   

    不好意思,没看清题目,Linq的上面给出的答案是对的
      

  15.   


    这个只在a==1才成立。
    改为:Console.WriteLine("sum({0}...{1})={2}", a, b - a + 1, Enumerable.Range(a, b).Sum())
      

  16.   

    呵呵,那就改为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 SubEnd Module其实我的意思是想说明vb.net完全支持Linq了,本来想说明一下lamda中如何表达function,可惜这个题目太简单了,没有法子说明。
      

  17.   

    int sum = (1 + 100) * 100 / 2;比循环速度快。呵呵。
      

  18.   

    学习一下 还没有用过LINQ 呵呵 支持 支持 
      

  19.   

    可以充分利用编译器,运行速度最快的实现
    #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;
    }
      

  20.   

    如果用元编程,还不如直接printf( "1+...+100=5050" );算了
      

  21.   

    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分。