求高手分析一下下面两道程序!
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还是你没有好好学。
我想“如何编写正确的程序”和“什么样的程序才算正确”应该是比编程本身更基本和更重要的东西,连这个你都不知道用什么方法判断,那你整天学个啥?
这就好比,不是每个人都能成为厨师,但是就是饭桶,也知道什么能吃、什么好吃这两个基本问题。