编写前10个数字而不使用任何for循环的逻辑

本文关键字:for 任何 循环 10个 数字 | 更新日期: 2023-09-27 17:52:42

我是新人,周五刚参加了第一次面试。

在一次机器测试中,他们让我写一个程序,在不使用任何for循环的情况下,将前十个数字相加,即1-10。我试了很多次,但都找不到解决办法。如何在不使用for循环的情况下编写程序逻辑来获得前10个自然数的和?

编写前10个数字而不使用任何for循环的逻辑

如果他们要求你不要使用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