The simple recursive function doesn't work well

时间:2019-01-15 18:06:02

标签: matlab recursion

It's just an easy recursive function test.

It should stop at n = 3, but not.

Could you please tell me where is wrong in my code?

Thank you!

>> recursiveFunction(0)

   101

     1

g
   102

     1

g
   103

     1

     2

     3

     2

g
   103

     1

     2

     3

     3

g
   103

     1

     2

     3

     2

g
   102

     1

g
   103

     1

     2

     3

     2

g
   103

     1

     2

     3

     3

g
   103

     1

     2

     3

     3

g
   102

     1

g
   103

     1

     2

     3

     2

g
   103

     1

     2

     3

     3

g
   103

     1

     2

     3
function recursiveFunction(callHierarchie)
    callHierarchie = callHierarchie + 1;
    disp(callHierarchie + 100);
    for n = 1:3
        disp(n);
        if callHierarchie <= 2
            disp('g');
            recursiveFunction(callHierarchie);
        end
    end
end

1 个答案:

答案 0 :(得分:1)

问题在于您如何生成输出以及如何解释输出。这是等效于Python的函数,可产生相同的输出:

def recursiveFunction1(callHierarchie):
    callHierarchie = callHierarchie + 1
    print("{:>6}".format(callHierarchie + 100))

    for n in range(1, 4):
        print("{:>6}".format(n))
        if callHierarchie <= 2:
            print('g')
            recursiveFunction(callHierarchie)

recursiveFunction(0)

伙计们可以验证它是否产生相同的输出。让我们根据递归级别修改代码以缩进:

def recursiveFunction(callHierarchie):
    callHierarchie = callHierarchie + 1
    print(" " * callHierarchie, "{:>6}".format(callHierarchie + 100))

    for n in range(1, 4):
        print(" " * callHierarchie, "{:>6}".format(n))
        if callHierarchie <= 2:
            print(" " * callHierarchie, 'g')
            recursiveFunction(callHierarchie)

现在输出显示略有不同:

% python3 test.py
     101
       1
  g
      102
        1
   g
       103
         1
         2
         3
        2
   g
       103
         1
         2
         3
        3
   g
       103
         1
         2
         3
       2
  g
      102
        1
   g
       103
         1
         2
         3
        2
   g
       103
         1
         2
         3
        3
   g
       103
         1
         2
         3
       3
  g
      102
        1
   g
       103
         1
         2
         3
        2
   g
       103
         1
         2
         3
        3
   g
       103
         1
         2
         3
% 

您可以看到n确实停在3,但是您看到的额外数字是n,处于不同的递归级别!