编写前10个数字而不使用任何for循环的逻辑
本文关键字:for 任何 循环 10个 数字 | 更新日期: 2023-09-27 17:52:42
我是新人,周五刚参加了第一次面试。
在一次机器测试中,他们让我写一个程序,在不使用任何for循环的情况下,将前十个数字相加,即1-10。我试了很多次,但都找不到解决办法。如何在不使用for循环的情况下编写程序逻辑来获得前10个自然数的和?
如果他们要求你不要使用for循环,那么你可以使用while或do while。如果你不想使用任何形式的循环,还有另一种方法。你可以用这个公式 1 + 2 + 3 +.........+( n - 1) + n = (n * (n + 1)/2 。
你必须加上前10个数字所以你可以像
那样使用它(10 *(10 + 1)/2。
Console.WriteLine("{0}",(10*(10+1))/2);
您可以通过询问用户n的值等使其更通用。希望这对您有所帮助。
如果我没理解错的话,你可以用简单的数学。
x = firstnaturalnumber;
你想有:
(x + 0) + (x + 1) + (x + 2) ... (x + 9)
自然数是整整数,这在数学上是合理的。最后的公式是:
sum = 10x + 45
自然数是等差级数的一种特殊情况。任何等差级数的和都可以用一个简单的公式计算,而不需要循环。
S = (n/2) *(1 <子>子> + n <子> ) 子>
我个人认为,如果面试官希望你能马上记住这个公式,这是不公平的。然而,如果你能自己完成这个系列并找出公式,你可能会给面试官留下深刻的印象!
如果他们指定不使用'for'循环,那么还有其他循环可用,例如do-while或while。递归函数也是一个不错的选择。
实际上,他们已经指定了要添加的数字。所以,不要自作聪明,直接使用"+"来添加它们。是的,这是一个愚蠢的答案,但这是一个答案。
static void Main(string[] args) {
Console.WriteLine("{0}", SumRecursive(1,10));
}
static int SumRecursive(int min, int max) {
return _SumRecursive(min, max);
}
static int _SumRecursive(int min, int val) {
if (val == min)
return val;
return val + _SumRecursive(min, val - 1);
}
您可以使用递归方法实现它,并且也没有for循环
public int AddDown(int i)
{
return i += (i >= 1 ? AddDown(--i) : 0);
}
x= 1 + 2 + 3+.....+ 2 + n - 1 + n
x =n +n-1+ n-2+ ....3+2 +1刚刚反转
对两边求和
2 x = (n + 1) + (n + 1) + (n + 1 )+ .....+( n + 1)///n次
2 x = n (n + 1)
x = n (n + 1)/2
在你的例子中x= 10(10+1)/2 = 55