一道关于算法的面试题 用C#编程并写出最终结果n+(n-1)+(n-2)+...+1(n=100)上大学的时候算法没好好学。有点坑。。求大神的解法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不就是从1加到100吗,一个for循环就完了,或者直接用Linq的Sum把100拿开,前面头尾拼成一对(n-1)+1,(n-2)+2...100 + 100 * (99/2) + (99/2 + 1) = 100 * 50 + 50 = 5050; 建议先学数学吧。话说那个说用for循环是在坑人啊 int sum = 0;for (int n = 100; n >= 0; n--){ sum += n;}Console.WriteLine(sum); 其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出 T(n) = n + T(n-1) ; n > 1 T(1) = 1你就不太可能学会简单的算术程序设计,因为不会识别函数公式。 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; } } 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. 怎么坑了,要我是用for了貌似N应该大于等于1. 其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出 T(n) = n + T(n-1) ; n > 1 T(1) = 1你就不太可能学会简单的算术程序设计,因为不会识别函数公式。貌似n应该大于等于1。 自定义控件继承自ComboBox,数据源动态生成,向窗体添加报错 c#全局钩子出现问题,求解答! System::Collections::ArrayList 类的深层拷贝和浅层拷贝. 求指导. 取定长字符串 问题,急!,急! 在线等。 GridView显示链接列 初学者 如何用xml表示如下的结构 郁闷中,想不通,一样的语句C与C#中为何会两个结果? 请教wpf的chart控件 webForm中dataset的操作???? 求救c# 如何选择tts发音体 线程中show 窗口的问题
把100拿开,前面头尾拼成一对(n-1)+1,(n-2)+2...
100 + 100 * (99/2) + (99/2 + 1) = 100 * 50 + 50 = 5050;
for (int n = 100; n >= 0; n--)
{
sum += n;
}
Console.WriteLine(sum);
其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出
T(n) = n + T(n-1) ; n > 1
T(1) = 1你就不太可能学会简单的算术程序设计,因为不会识别函数公式。
{
if(n <1)
throw new Exception("n can't be less than 1!");
if(n == 1)
return n;
else
return process(n-1)+n;
}
{
return n*(1 + n) / 2;
}这才是考官想要的答案
{
MessageBox.Show(AddSum(100).ToString());
} private int AddSum(int a)
{
a -= 1;
if (a > 1)
{
return a + AddSum(a);
}
else
{
return a;
}
}
for (int n = 100; n >= 0; n--)
{
sum += n;
}或者简单点。。int sum=0;
sum=((n+1)*n)/2;
就这么简单
忘记初始化n了,sorry
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.
貌似N应该大于等于1.
其实这个基础跟编程没有直接关系,主要是看你的数学逻辑知识。当一个人从初中数学水平迈入高中数学水平(或者大学一年级水平),他就不应该这样写公式了。他学到的所有数学知识都是函数推导式的。如果你写不出
T(n) = n + T(n-1) ; n > 1
T(1) = 1你就不太可能学会简单的算术程序设计,因为不会识别函数公式。貌似n应该大于等于1。