私は新米で、金曜日に最初の面接を受けました。
マシン テストで、最初の 10 個の数字、つまり 1 ~ 10 を for ループを使用せずに追加するプログラムを作成するように依頼されました。私はそれをたくさん試しましたが、解決策を見つけることができません。for ループを使用せずに、最初の 10 個の自然数の合計を取得するプログラム ロジックを作成するにはどうすればよいでしょうか。
for loop を使用しないように求められた場合は、 while または do while を使用できます。ループのkndを使用したくない場合は、別の方法があります.1 + 2 + 3 + .......... +(n-1)+ n =(n * (n+1))/2 .
次のように使用できるように、最初の10個の数字を追加する必要がありました
(10*(10+1))/2。
Console.WriteLine("{0}",(10*(10+1))/2);
ユーザーに n などの値を尋ねることで、より一般的なものにすることができます。これがお役に立てば幸いです。
自然数は算術級数の特殊なケースです。算術級数の合計は、ループを必要とせずに単純な式で計算できます。
S = (n / 2) * (a 1 + a n )
個人的には、面接担当者がこの式を頭のてっぺんから覚えているだけだと期待するのは不公平だと思います. ただし、このシリーズを読み進めて自分で式を考え出すことで、おそらくインタビュアーに大きな印象を与えることができるでしょう!
あなたの言っていることが正しく理解できれば、簡単な数学を使うことができます.
x = firstnaturalnumber;
あなたがしたい:
(x + 0) + (x + 1) + (x + 2) ... (x + 9)
自然数は完全な整数であるため、これは数学的に適切です。最終的な式は次のとおりです。
sum = 10x + 45
「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+.....+n-2 +n-1+n
x =n +n-1+ n-2+ ....3+2 +1 反転するだけ
両側を合計する
2x= (n+1) +(n+1) +(n+1)+ .....+(n+1) ///n 回
2x=n(n+1)
x=n(n+1)/2
あなたの場合、 x= 10(10+1)/2 = 55