Подумайте об этом так, запустив это, вы всегда увидите, что количество звездочек равно входному значению.
Почему это так?
Давайте рассмотрим случай, который вы указали, где входное значение равно 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 ')
Теперь стек очищается, и мы печатаем результат' **** '