$('#YOUR_ELEMENT').editable({
// ...
source: function () {
var items = {1: 'B.tech', 2: 'M.tech'};
return Object.keys(items).map(function(x) {return items[x];});
},
// ...
});
在上面的代码中,你好打印n次(我得到),世界打印n + 1次(我不打算)得到所有)。当n = 0时,不应该只打印一次吗?我的意思是它没有返回任何调用函数。 谢谢。
答案 0 :(得分:4)
你正在递归地调用一个函数,如果没有早期返回或每次打印被调用时会出现任何条件,它将打印" world"。
为了说清楚,如果是printf("世界);在其他内部,它只打印一次。
if (n>0)
{
printf(“hello”);
print(n-1);
}else{
printf(“world”);
}
答案 1 :(得分:1)
在函数内部定义函数时发生递归。在您的函数中,每次n > 0
您将printf("hello");
,然后使用n-1
再次调用自己。请记住,您的函数将继续调用自身,直到n is equal to 0
。但是在n is equal to 0
的最后一种情况下,if语句将失败并继续到方法中的最后一行printf("hello")
。由于您的方法签名无效,即使您没有明确声明返回语句,也会导致该方法完成。当方法完成时,我们递归地冒泡并完成每个方法的其余部分。在这种情况下,方法的其余部分将为printf("world")
,打印时间超过printf("hello")
。
答案 2 :(得分:1)
你好打印了n次(我得到了)并且世界被打印了n + 1次(我根本没有得到)。
这是在你的情况下执行指令的方式。为[n, 1]
执行“hello”并为[0, n]
执行“world”。
n : printf("hello");
n-1 : printf("hello");
n-2 : printf("hello");
....
2 : printf("hello");
1 : printf("hello");
0 : printf("world"); << Difference is here
1 : printf("world");
2 : printf("world");
....
n-2 : printf("world");
n-1 : printf("world");
n : printf("world");