You are here

pointer

tcl로 pointer의 이해도가 부족해서 아래 이슈를 해결을 못하고 있습니다..ㅠㅠ

제가 원하는 바는 sofar라는 변수들을 output으로 lappend하여 return하고 싶은데.. upvar를 이용해서 가져오질 못하고 있습니다.

간단한 몇줄만 추가해서 $sofar라는 local 변수를 output이라는 변수에 추가하면 되는 것 같은데.. 도움 부탁드립니다.

proc combinationSum {sum sofar want numbers output } {
if { $sum == $want } {
puts $sofar
#lappend output $sofar
#upvar output $sofar
}
if { ( $sum 0 ) && ( [llength $numbers] > 0 ) } {
combinationSum [expr $sum + [lindex $numbers 0]] [concat $sofar [lindex $numbers 0]] $want $numbers $output
combinationSum $sum $sofar $want [lrange $numbers 1 end] $output
}
return $output
}

set test_input [list 2 3 5 ]
set test_target 10
set test_output [combinationSum 0 [] $test_target $test_input []]
puts $test_output