【问题标题】:Convert function iterative to recursive [duplicate]将函数迭代转换为递归[重复]
【发布时间】:2016-10-12 00:34:48
【问题描述】:

如何将这个迭代函数传递给递归

void triangulo(int max)
    {
        int i, j;
        for(i = 1; i <= max; i++)
        {
            for(j = 0; j < i; j++)
                printf("%d", j + 1);
            printf("\n");
        }
    }

有人知道吗?还是不可能做到这一点?

更新

void triangulo(int n, int i, int j)
{
    if(i <= n)
    {
        if(j < i)
        {
            printf("%d", j + 1);
            triangulo(n, i, j + 1);
        }
        if (j == i)
        {
            printf("\n");
            triangulo(n, i + 1, 0);
        }
    }
}

【问题讨论】:

  • for 更改为if,其分支是最后一种情况和函数调用
  • 请用伪代码实现

标签: c


【解决方案1】:

试试这个:这里我将ij 作为参数,因为在每个递归中它们都有不同的值。

void triangulo(int max,int i,int j) //make i and j as arguments
{
    if(i<max)
    {
        if(j<max)
        {
            printf("%d",j);
            triangulo(max, i, ++j);//dont use post increment operation
        }
        else
        {
            printf("\n");
            triangulo(max , ++i, 0);
        }
    }
}

一般来说

  • 使用ifelse 作为条件和
  • 在其末尾发送参数作为迭代方法中可能发生的情况。

【讨论】:

  • 我想做全递归
  • 你能不能说的更准确点...我听不懂@cheroky
  • 不使用任何循环
  • @cherokt 已更新...我希望这会有所帮助:)。
  • 非常感谢
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 2015-05-30
  • 2014-03-01
相关资源
最近更新 更多