分からない部分
print("‼️ a[n] は (a[n])")で何故、
[n] は 2 と出力されるかが分かりません。
何故、[n] は 1 とならないのでしょうか?
func permute(_ a: [Int], _ n: Int, _ pos: inout Int) { var a = a pos += 1 a[n] = pos print("???? (a)") if pos == a.count - 1 { print(a) // display the current permutation } else { for i in 0..<a.count { if a[i] == 0 { print("‼️ここまで (permute(a, i, &pos))") } } } pos -= 1 print("???? 減算 pos - 1 で = (pos)") print("‼️ a[n] は (a[n])") a[n] = 0 print("???? (a)") } let numbers = [0, 0, 0] var pos = -1 permute(numbers, 0, &pos)
関数をスタートさせ、
print("???? (a)") で
???? [0, 0, 0]
???? [1, 0, 0]
???? [1, 2, 0]
の????[1, 2, 0]が1番最初に出力されてから、
初めてprint("???? 減算 pos - 1 で = (pos)") で減算され pos = 1になります。
それからすぐに a[n](pos == 1の状態)なので、index 1の値 2が 0に更新されると思います。
ですのでprint("???? (a)")では [1, 0, 0]になっています。
分からない部分の a[n] は 2 は
何故、[n] は 1 とならないのでしょうか?
減算されている時に加算していないので、
[n] = pos の更新が行われていないからでしょうか?
この部分が分からないので、
初めて print("‼️ここまで (permute(a, i, &pos))") が出力されるまでの処理以降の
理解が進みません。
見ていただけないでしょうか?
お願いします。
回答1件
あなたの回答
tips
プレビュー