下面是显示方程x1 + x2 + ... + xk = n的所有正解的程序,其中k和n是正整数:
func solution(k: Int, n: Int) {
if k > n || k <= 0 {
print("No solution")
} else
if k==1 {
print(n)
} else {
for i in 1...(n-k+1) {
print(i, terminator:"")
solution(k-1, n: n-i)
print("")
}
}
}
solution(4, n: 4)
这个程序运行良好,n = 4和k = 1,2,4,但是当k = 3时它显示不正确。有人可以帮助找到错误吗?
答案 0 :(得分:2)
问题是n = 4且情况k = 1,2,4,每个i只有一个解决方案,因此list_to_fill = [2,'else']
for col_name in list_to_fill:
if col_name not in new_df.columns:
new_df[col_name] = 0
In [252]: new_df
Out[252]:
subtype 1 2 else
type
A 25 0 0
B 12 0 0
C 40 0 0
正常工作。
但是,对于k = 3的情况,例如,在k = 3处打印1之后,因此有多个正确的情况:print(i, terminator:"")
或(1 , 2, 1)
,这意味着只有一个命令{在( 1, 1, 2)
{1}}是不够的。
图像打印例程将类似于:
print(1, terminator:"")
解决此问题的一种简单方法是在每个递归步骤中打印,而不是将所有结果存储在一个数组中,并在k达到0时打印此数组