当前位置:编程学习 > C#/ASP.NET >>

一道关于算法的面试题

用C#编程并写出最终结果n+(n-1)+(n-2)+...+1(n=100)

上大学的时候算法没好好学。
有点坑。。求大神的解法。 --------------------编程问答-------------------- 问题是要 加到什么时候


这样弄下去  是无穷小啊 --------------------编程问答-------------------- 不仅算法没学好,高中的等差数列你也没学好 --------------------编程问答--------------------
引用 2 楼 zxz414644665 的回复:
不仅算法没学好,高中的等差数列你也没学好


语文也没学好

表达能力不够 --------------------编程问答-------------------- 不就是从1加到100吗,一个for循环就完了,或者直接用Linq的Sum
把100拿开,前面头尾拼成一对(n-1)+1,(n-2)+2...
100 + 100 * (99/2) + (99/2 + 1) = 100 * 50 + 50 = 5050;
--------------------编程问答--------------------
引用 1 楼 wawd74520 的回复:
问题是要 加到什么时候


这样弄下去  是无穷小啊


n=100。。有条件了。这个是原题目。 --------------------编程问答--------------------
引用 4 楼 dongxinxi 的回复:
不就是从1加到100吗,一个for循环就完了,或者直接用Linq的Sum
把100拿开,前面头尾拼成一对(n-1)+1,(n-2)+2...
100 + 100 * (99/2) + (99/2 + 1) = 100 * 50 + 50 = 5050;

谢谢了。
求完整编程语句。。 --------------------编程问答-------------------- 高斯表示 很无语  --------------------编程问答-------------------- 建议先学数学吧。话说那个说用for循环是在坑人啊 --------------------编程问答-------------------- n*(1 + n) / 2 --------------------编程问答--------------------
引用 8 楼 dern_wang 的回复:
建议先学数学吧。话说那个说用for循环是在坑人啊

大神求解。按我的理解就是1加到100 --------------------编程问答--------------------
你早点说嘛  你怎么不早点说
你说我就会知道
你不说我怎么会知道
我说你不说我怎么知道你说不说我说你说不说我说 --------------------编程问答-------------------- int sum = 0;
for (int n = 100; n >= 0; n--)
{
    sum += n;
}
Console.WriteLine(sum); --------------------编程问答--------------------
引用 1 楼 wawd74520 的回复:
问题是要 加到什么时候


这样弄下去  是无穷小啊


N都等于100了。我的理解就是1加到100。。。 --------------------编程问答-------------------- 你确认这是面试题?国内某底端培训机构的入学题都比这个复杂。 --------------------编程问答-------------------- 怎么不看9楼的答案呢 --------------------编程问答--------------------
引用 14 楼 caozhy 的回复:
你确认这是面试题?国内某底端培训机构的入学题都比这个复杂。

是的。

按我看来就是1加到100的。我以为他要搞什么花样。。 --------------------编程问答-------------------- 可能只是个基础的题目吧,也许楼主想多了 --------------------编程问答--------------------
引用 8 楼 dern_wang 的回复:
建议先学数学吧。话说那个说用for循环是在坑人啊

怎么坑了,要我是用for了 --------------------编程问答--------------------
引用 楼主 chnyifan 的回复:
用C#编程并写出最终结果n+(n-1)+(n-2)+...+1(n=100)

上大学的时候算法没好好学。
有点坑。。求大神的解法。


其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。

当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出
    
      T(n) = n + T(n-1)  ;  n > 1
     T(1) = 1

你就不太可能学会简单的算术程序设计,因为不会识别函数公式。

--------------------编程问答-------------------- 你就不太可能学会简单的算术程序设计,因为不会识别函数公式。 --------------------编程问答-------------------- 来看看,学习来了、、 --------------------编程问答-------------------- 從100加到1,也就是1加到100 --------------------编程问答-------------------- 反过来看,就是从1加到100
算法就算了把 --------------------编程问答-------------------- 不就是N(N+1)/2 么?
学过初中的都应该知道吧 --------------------编程问答--------------------                int process(int n)
{
if(n <1)
throw new Exception("n can't be less than 1!");
if(n == 1)
return n;
else
return process(n-1)+n;
} --------------------编程问答-------------------- 面试官经常被打得 --------------------编程问答-------------------- public int Fuction1(int n)
{
  return  n*(1 + n) / 2;
}

这才是考官想要的答案 --------------------编程问答--------------------    private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show(AddSum(100).ToString());
        }

        private int AddSum(int a)
        {
            a -= 1;
            if (a > 1)
            {
                return a + AddSum(a);
            }
            else
            {
                return a;
            }
        } --------------------编程问答-------------------- 卧槽,高斯算法呀 --------------------编程问答-------------------- --------------------编程问答-------------------- ((n+1)*n)/2 --------------------编程问答-------------------- 对你的题目表示很蛋疼,因为从1加到100的记过小学就已经学过了,5050 --------------------编程问答-------------------- 很有意思。。。。 --------------------编程问答-------------------- 这些学C的时候经常玩. --------------------编程问答--------------------
这不就是 100+到1的节奏吗?
 坑人啊,高斯瞬间觉得自己的成名作呗秒杀了。~!有木有。 --------------------编程问答--------------------
引用 14 楼 caozhy 的回复:
你确认这是面试题?国内某底端培训机构的入学题都比这个复杂。

确实,你确定这是面试题??? --------------------编程问答-------------------- int sum = 0;
for (int n = 100; n >= 0; n--)
{
    sum += n;
}

或者简单点。。

int sum=0;
sum=((n+1)*n)/2;
就这么简单。。。
--------------------编程问答-------------------- int n=0;
忘记初始化n了,sorry --------------------编程问答--------------------

            int n =100;
            int i=n-1;
            int a=0;
            for(n=100;i<100;i--)
             {
                 if (i == 0)
                     break; 
                a+=n-i;
             }
            MessageBox.Show(a.ToString());

我写的,测试了下,结果4950. --------------------编程问答-------------------- 100+99+98+....+1

你觉得这像什么? --------------------编程问答-------------------- 不到十岁的高斯表示对楼主的智商深表同情 居然考上了大学。。。。 --------------------编程问答-------------------- =(n+1)*(n/2) --------------------编程问答-------------------- n*n - (1+n)*n/2; --------------------编程问答-------------------- 我可以非常肯定地说:死记硬背个等差数列公式,还自认为“这就是面试官想要的答案”,这会被面试官认为比较悲催。

面试除了要剔除什么都不动手的人以外,就是要剔除靠死记硬背混进来的人。因为剔除千方百计混下来的人,剩下的人才能相互激励形成比较主动的“程序设计”的独立思考环境。 --------------------编程问答-------------------- 上初中的时候,或许老师给你写上一个“求和公式”让你死记硬背。但是当你上了大学,你会发现,许多计算知识都要重新学过,你要学会“自己动手”推导公式了。

面试官都是要招聘中学生而不是大学生?肯定要理解面试的问题。

当然,能够面这样的题目(并且这样容易被歧义),说明这个面试官或许是想:这纯粹是面一个毫无基础的大专生。 --------------------编程问答-------------------- 教你个好办法, 又好记好能明白:
梯形面积公式知道吧: (上底+下底)*高/2

你那个题目一样: 上底100, 下底1 , 高100 
所以就是 (100+1)*100/2

记住了吧, --------------------编程问答--------------------
引用 18 楼 u011130289 的回复:
Quote: 引用 8 楼 dern_wang 的回复:

建议先学数学吧。话说那个说用for循环是在坑人啊

怎么坑了,要我是用for了

貌似N应该大于等于1. --------------------编程问答--------------------
引用 19 楼 sp1234 的回复:
Quote: 引用 楼主 chnyifan 的回复:

用C#编程并写出最终结果n+(n-1)+(n-2)+...+1(n=100)

上大学的时候算法没好好学。
有点坑。。求大神的解法。


其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。

当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出
    
      T(n) = n + T(n-1)  ;  n > 1
     T(1) = 1

你就不太可能学会简单的算术程序设计,因为不会识别函数公式。

貌似n应该大于等于1。 --------------------编程问答-------------------- 考的是递归。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,