Факториал рекурсии ошибки компиляции HackerRank Python

#python #python-3.x

#python #python-3.x

Вопрос:

Проблема

Вычислите и выведите факториал заданного положительного целого числа. Целое число может быть таким же большим, как 100 .

Вот ссылка на проблему

Мои усилия

Я пробовал решения на других компиляторах, они отлично работают на других компиляторах, но на hackerrank он не работает, говоря об ошибке времени компиляции

 # Enter your code here. Read input from STDIN. Print output to STDOUT
def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

no = int(raw_input())
print fac(no)
  

Любая помощь будет оценена

Ответ №1:

Это решение отлично работает для Python 2 — я запустил ваш код на Hackerrank, и он прошел все тестовые примеры.

Итак, ошибка компиляции отображается, если код скомпилирован с помощью Python 3.

нет = int(raw_input())

Ошибка имени: имя ‘raw_input’ не определено

Это верно, потому raw_input что должно быть заменено на input() в Python 3.

Если код с исправлением выполняется после этого, возникает другая проблема:

печать fac(нет)

^

Ошибка синтаксиса: недопустимый синтаксис

Опять же, просто добавьте круглые скобки fac(no) , а затем код компилируется и проходит все тесты:

Итак, полный код приведен ниже:

 def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

no = int(input())
print (fac(no))