Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос про 16 номер егэ информатика рекурсия

вапролдж шварцнегер Ученик (112), открыт 3 недели назад
def F(n):
if n==1:
return 1
if n==2:
return 1
if n>2:
return F(n–1) * n − 2 * F(n–2)
print (F(6))
почему выдает ошибку в этом коде
2 ответа
Мыслитель (9742) 3 недели назад
Вместо минуса ты используешь тире
Так надо:
 def F(n):  
if n==1:
return 1
if n==2:
return 1
if n>2:
return F(n-1) * n - 2 * F(n-2)
print(F(6))
вапролдж шварцнегерУченик (112) 3 недели назад
гений, спасибо
Rich Robertson Знаток (469) 3 недели назад
В вашем коде есть несколько проблем, которые могут вызвать ошибку. Давайте рассмотрим их:

Неправильный символ для вычитания: В строке с рекурсивным вызовом функции вы используете длинное тире (–) вместо стандартного символа минус (-). Это может вызвать синтаксическую ошибку. Замените F(n–1) на F(n-1) и 2 * F(n–2) на 2 * F(n-2).
Логика рекурсии: Убедитесь, что логика функции соответствует вашим ожиданиям. Ваше определение функции F(n) выглядит как использование произвольной логики, и это может вызывать путаницу, если это не то, что вам нужно. Например, возможно, это не стандартная формула для какой-либо известной последовательности.
Исправленный код с учетом вышеизложенного будет выглядеть так:

def F(n):
if n == 1:
return 1
if n == 2:
return 1
if n > 2:
return F(n - 1) * n - 2 * F(n - 2)

print(F(6))
Похожие вопросы