【发布时间】:2025-12-18 14:00:01
【问题描述】:
我正在尝试编写一个日程安排应用程序,它接收课程信息并创建所有可能的日程安排。我以前从未在 javascript 中编写过递归函数,但我不确定为什么它会与任何其他语言不同。
在递归方法中,这些值似乎已正确添加到数组中,但一旦执行返回到非递归函数,这些值显然会丢失。
以下是有问题的功能(用咖啡脚本编写),here 是我当前功能的一个小玩意。
有人能告诉我为什么返回的schedules 中的两个数组都是空的吗?
combine: ->
schedules = []
@recursiveCombine(@courses, [], schedules)
return schedules
recursiveCombine: (courses, chosenSections, schedules) ->
if chosenSections.length is Object.keys(courses).length
console.log 'pushing schedule: '
for section in chosenSections
console.log '\t' + section.courseName + ' ' + section.number
schedules.push chosenSections
return
next = chosenSections.length
course = courses[next]
for section in course.sections
if not @overlap(section, chosenSections)
chosenSections.push section
@recursiveCombine(courses, chosenSections, schedules)
chosenSections.pop()
【问题讨论】:
-
什么是
@courses?你正在做Object.keys(courses)和courses[chosenSections.length],第一个表明courses是一个对象,但第二个表明它是一个数组。
标签: javascript recursion coffeescript