将函数迭代转换为递归

时间:2016-06-10 23:28:54

标签: c

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

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

2 个答案:

答案 0 :(得分: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作为条件和
  • 在迭代方法中可能发生的事情发送参数。

答案 1 :(得分:0)