日期:2014-05-18  浏览次数:20895 次

求高手分析一下下面两道程序!
C#:
1.计算s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值,当某一项的值超过50时,结束循环,并将当时的s的值进行输出,将当时刚好超过50的那一项的值也输出

第一个编程:
static int Fun(int _i, int _sum)
  {
  int sum = 0;
  for (int j = 0; j <= _i; j++)
  {
  sum = sum + j;
  }
  sum = sum + _sum;
  if (_i == 50)
  {
  return sum;
  }
  return Fun(_i + 1, sum);
  }

int x=Fun(1,0)




第二个编程:
#include <iostream>

using namespace std;


int main(void)

{

int sum = 0;

int i = 1;


int sum_item = 1;

while(sum_item < 50)

{

sum += sum_item;


++i;

sum_item = i * (i + 1) / 2;

}


cout << sum << endl;


return 0;

}



求高手检验一下哪个程序正确???说明理由!或者有其他编程的请写出来谢谢!

------解决方案--------------------
对不对自己运行看啊,第一个是递归,第二个就是循环
------解决方案--------------------
不知道是你们老师sb还是你没有好好学。

我想“如何编写正确的程序”和“什么样的程序才算正确”应该是比编程本身更基本和更重要的东西,连这个你都不知道用什么方法判断,那你整天学个啥?

这就好比,不是每个人都能成为厨师,但是就是饭桶,也知道什么能吃、什么好吃这两个基本问题。