Простая рекурсивная функция не работает хорошо - PullRequest
0 голосов
/ 15 января 2019

Это просто простой рекурсивный функциональный тест.

Он должен остановиться на n = 3, но не на этом.

Не могли бы вы сказать мне, где не так в моем коде?

Спасибо!

>> 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 голосов
/ 15 января 2019

Проблема заключается в том, как вы генерируете свои выходные данные и как вы интерпретируете свои выходные данные. Вот эквивалентная функция 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 на другом уровне рекурсии!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...