【发布时间】:2017-02-15 18:52:24
【问题描述】:
我有一个递归函数,它打印出所有有效的平衡括号组合,如下所示:
function addParen(upstock, downstock, sa)
{
if (upstock == 0 && downstock == 0)
{
Print(sa);
}
if (upstock > 0)
{
addParen(upstock - 1, downstock + 1, sa + "(");
}
if (downstock > 0)
{
addParen(upstock, downstock - 1, sa + ")");
}
}
它直接将结果打印为字符串,如“((()))”或“()()()”,n=3(我们假设 3 对,对的数量并不重要)。但是,每当初始空字符串与“(”或“)”连接时,我希望我的递归函数一个一个地打印每个括号。例如,对于第一个组合,我希望它像“(”然后“(”然后“ (" then ")" then ")" and then ")"。那么第二个组合可以用同样的方法进行。可以吗?
【问题讨论】:
-
您要等待用户输入吗?这就是你要问的吗?函数是正确的,或者你想要做什么是"(" "(" "(" ")" ")" ")"
-
不,我想做的是在递归进行并且字符串与左括号或右括号连接时,我立即想将该括号放在屏幕上。使用该功能,只要 upstock 和 downstock 等于 0,我总是将完成的字符串显示在屏幕上。
-
你希望它如何打印带有给定前缀的第二个字符串?还是您在寻找树形输出?
-
当输入太大时我问这个的原因我想在程序完成其余部分时在屏幕上看到结果组合。
-
但是您的程序在找到每个字符串时将其打印出来;它不需要等待计算所有字符串。那么您观察到什么问题?
标签: javascript algorithm recursion printing output