带指针数组的递归函数

时间:2015-08-05 21:57:50

标签: c recursion

我正在尝试使用输出创建递归函数:

曾几何时,有一个孩子无法入睡, 所以孩子的母亲告诉她一个故事 一只无法入睡的老鼠 所以老鼠的妈妈告诉她一个故事 一只无法入睡的乌龟 所以乌龟的母亲告诉她一个故事 一只无法入睡的青蛙 所以青蛙的母亲告诉她一个故事 一只去睡觉的熊。

然后青蛙去睡觉了。 然后乌龟去睡觉了。 然后老鼠去睡觉了。 然后孩子去睡觉了。

我已经完成了第一段,但是当我试图重新循环并打印出下一段时,它变成了一个无限循环。我需要另一个递归函数来完成吗?任何帮助,将不胜感激。

    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));
        });
    },

1 个答案:

答案 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仅打印" ...谁去睡觉"。