【发布时间】:2018-03-01 17:55:01
【问题描述】:
我要做的就是实现给定here的解决方案(python中的那个) 在 R。 我不太习惯在 R-Studio 中进行调试,但即使在我尝试过之后,我仍然无法弄清楚为什么我的代码不起作用。基本上(使用提供的示例输入)我得到了运行所有数字的函数,然后它陷入了一种无限循环(或函数)中。有人可以为我指出正确的方向吗?
subset_sum <- function(numbers, target, partial = numeric(0)){
s <- sum(partial,na.rm = TRUE)
# check if the partial sum equals to target
if (s == target){
cat("sum(",partial,")","=",target)
}
else if (s >= target) {
return() # if we reach the number why bother to continue
}
else {
for(i in 1:length(numbers)){
n <- numbers[i]
remaining <- numbers[i+1:length(numbers)]
subset_sum(remaining, target, partial = append(partial,n))
}
}
}
subset_sum(c(3,9,8,4,5,7,10),15)
当不在调试模式下运行时,它会给我这些错误:
Error: node stack overflow
Error during wrapup: node stack overflow
【问题讨论】:
-
我可能理解错了,但是你怎么能在你的函数中使用函数
subset_sum,也叫subset_sum? -
@Visser:它被称为 recursion,这是问题的标签之一。这是一个有趣的话题;做一点研究,玩得开心。
-
试试
remaining <- numbers[(i+1):length(numbers)]。注意:和+的运算符优先级 -
@MrFlick:谢谢!看来这是我的问题。