递归一定得注意 递归条件和 返回值,有的时候一个递归函数会有多中返回(其中就有很多返回给自己,但是总有一次是返回给主调用函数)
下面这两种结果不同,第一种 以循环后面的return 返回给主函数,而第二种就是条件后面的return
def self.find_all_children(device_group, terminal_ids = [])
terminal_ids += device_group.terminals.collect { |t| t.id }
if device_group.children
device_group.children.each do |group|
terminal_ids += find_child(group, terminal_ids)
end
terminal_ids
else
return terminal_ids
end
end
def self.find_parent(device_group, datas = [])
if device_group.present?
data = {:id => "g_#{device_group.id}", :name => device_group.name, :isParent => true, :open => true, :pId => ("g_#{device_group.parent.id}" rescue "")}
datas << data
find_parent(device_group.parent, datas)
else
return datas
end
end