我正在尝试使用输出创建递归函数:
曾几何时,有一个孩子无法入睡, 所以孩子的母亲告诉她一个故事 一只无法入睡的老鼠 所以老鼠的妈妈告诉她一个故事 一只无法入睡的乌龟 所以乌龟的母亲告诉她一个故事 一只无法入睡的青蛙 所以青蛙的母亲告诉她一个故事 一只去睡觉的熊。
然后青蛙去睡觉了。 然后乌龟去睡觉了。 然后老鼠去睡觉了。 然后孩子去睡觉了。我已经完成了第一段,但是当我试图重新循环并打印出下一段时,它变成了一个无限循环。我需要另一个递归函数来完成吗?任何帮助,将不胜感激。
beforeModel: function(params){
return this.get('session').authenticate().then(function(){
this.findClient(params);
}.bind(this)).catch(function(err){
//retrieve new session
return this.get('session').authorize().then(function(){
this.findClient(params);
}.call(this));
});
},
答案 0 :(得分:1)
问题是你的递归在n - 1
时下降(n > 0
),当它达到0时,它再次用1(n + 1
)调用自身,再次调用0( n - 1
)无限期地。
您可能想要做的是:
void story(char **string1, int n)
{
if ( n > 0 )
{
printf("a %s who couldn't sleep,\n", *(string1 + n));
printf("so the %s's mother told her a story about\n", *(string1 + n));
story(string1, n - 1);
printf("Then the %s went to sleep.", *(string1 + n));
}
else
{
printf("a %s who went to sleep.", *string1);
}
}
因此,在最后一次(n == 0
)之前的每次迭代打印它的部分并调用递归来填充"中间"直到"去睡觉"。结束规则n == 0
仅打印" ...谁去睡觉"。