現在再帰呼び出しの勉強をしているのですが、どうも難しく理解できておりません
c#
1class Program 2 { 3 static void Main(string[] args) 4 { 5 Sum(5); 6 } 7 8 static int Sum(int n) 9 { 10 if (n == -200) return 1; 11 Console.WriteLine(n); 12 System.Threading.Thread.Sleep(100); 13 int result = Sum(n - 1) + n; 14 Console.WriteLine("..." + result); 15 return result; 16 } 17 }
このプログラムなのですが、結果は
5から-199 ...-198から...-19884と表示されます。
私は再帰呼び出しはこんな風にとらえているのですが、
c#
1Sum(5) 2 { 3 ....... 4 int result = Sum(4) { //この時点でよびされる 5 ....... 6 int result = Sum(3) { 7 8 } +n; 9 } +n; 10 }
この考えでいくと5から-199まで表示されたあと、return 1;で、int result = Sum(-200)に1が返され、int result = 1 + -199となり、次はSum(-199)に-198が返され、-198-199で...-397が表示されて...と思うのですが、どこが間違っているのでしょうか。
教えて下さい
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/26 13:52
2016/08/28 11:39