关于JS递归程序findSolution()的函数调用图(并不是流程图)

o 请修改程序计算出 1-100内 调用深度最大的 数字(以下是我的程序)
function findSolution(target){
function find(start,history){
if(start==target)
return history;
else if(start>target)
return null;
else
return find(start+5,"("+history+"+5)")||find(start*3,"("+history+"*3)");
}
return find(1,"1");
}
var number = 0;
var max = 0;
var pos = 0;
for(var x=1;x<101;x++){
if(findSolution(x)==null){
continue;
}
number = findSolution(x).length;
//console.log(number);
var a=new Array();
a[x]=number;
if(max < number){
max = number;
pos = x;
}
}
console.log(pos);
结果是96
o 画出该数字的 调用图(这个调用图我不是很能理解,求大神指教)

调用图就是函数运行时的调用关系
如下是96的调用图
findSolution(96)
→find(1,"1")
→find(6,"(1+5)")
→find(11,"((1+5)+5)")
→find(16,"(((1+5)+5)+5)")
→find(21,"((((1+5)+5)+5)+5)")
→find(26,"(((((1+5)+5)+5)+5)+5)")
→find(31,"((((((1+5)+5)+5)+5)+5)+5)")
→find(36,"(((((((1+5)+5)+5)+5)+5)+5)+5)")
→find(41,"((((((((1+5)+5)+5)+5)+5)+5)+5)+5)")
→find(46,"(((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(51,"((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(56,"(((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(61,"((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(66,"(((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(71,"((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(76,"(((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(81,"((((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(86,"(((((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(91,"((((((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
→find(96,"(((((((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)")
表示由主函数以参数96调用函数findSolution
函数findSolution又以参数1,"1"调用函数find
函数find又以参数6,"(1+5)"调用自己
函数find又以参数11,"((1+5)+5)"调用自己
函数find又以参数16,"(((1+5)+5)+5)"调用自己
......
函数find又以参数96,"(((((((((((((((((((1+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)+5)"调用自己
最后就逐一返回
把最后的结果传回到主函数
温馨提示:答案为网友推荐,仅供参考