Как я должен прочитать этот код о рекурсии? - PullRequest
1 голос
/ 14 января 2020

Как мне прочитать этот код?

  if n <= 0:
    return ''  
  else:
    temp = repeatStar(n-1)  
    s = '*'  + temp 
    return s

a = 4
res = repeatStar(a)
print(res)

Часть, в которой я больше не понимаю, это часть repeatStar (n-1). Он будет повторять функцию до тех пор, пока n == 0, а затем вернет ''. Но тогда откуда все звезды? s = '*' + темп. Так что это должно быть '*' + '' правильно? Что я делаю не так?

Извините, если я не объяснил это хорошо

1 Ответ

0 голосов
/ 15 января 2020

Подумайте об этом так, запустив это, вы всегда увидите, что количество звездочек равно входному значению.

Почему это так?

Давайте рассмотрим случай, который вы указали, где входное значение равно 4:

Вы вызываете функцию с помощью ввода n = 4, она проверяет оператор if, затем переходит в блок else, инициализирует temp и пытается вычислить 'repeatStar (4-1)'

Вы вызываете функцию с входом n = 3, она проверяет оператор if, затем переходит в блок else, инициализирует temp и пытается вычислить 'repeatStar (3-1)'

Вы вызываете функцию с помощью ввода n = 2, она проверяет оператор if, затем переходит в блок else, инициализируя temp, пытается вычислить 'repeatStar (2-1)'

Вы вызываете функцию с помощью ввода n = 1, она проверяет оператор if, затем переходит в блок else, инициализирует temp и пытается вычислить 'repeatStar (1-1)'

Вы вызываете функцию с входом n = 0, она проверяет оператор if, затем переходит к возвращаемому параметру empty_string

, теперь имеющему temp as (empty_string), s присваивается ('*' + empty_string) и возвращает, что

теперь имеет temp as (' * '+ empty_string), s назначается (' * '+' * '+ empty_string) и возвращает, что

теперь имеет temp как (' * '+' * '+ empty_string'), s назначается ('*' + '*' + '*' + empty_string ') и возвращает, что

теперь имеет temp как (' * '+' * '+' * '+ empty_string') , назначен s ('*' + '*' + '*' + '*' + empty_string ')

Теперь стек очищается, и мы печатаем результат' **** '

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