@shindayoni
Только начинаю учиться программировать.

# Рекурсивная функция F(n) и G(n). В чем ошибка?

Сама задача:

Алгоритм вычисления значения функций F(n) и G(n), где n - натуральное число, задан след. соотношениями:
F(n) = G(n - 2), если n > 2
G(n) = F(n - 1) + n, если n > 1
Чему равно значение функции от F(8)?

Мой код:
``````def F(n):
if n > 2:
return G(n - 2)

def G(n):
if n > 1:
return F(n - 1) + n

print(F(8))``````

Код ошибки, :
``````Traceback (most recent call last):
File "main.py", line 127, in <module>
print(F(8))
File "main.py", line 119, in F
return G(n - 2)
File "main.py", line 124, in G
return F(n - 1) + n
File "main.py", line 119, in F
return G(n - 2)
File "main.py", line 124, in G
return F(n - 1) + n
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'``````
• Вопрос задан
• 90 просмотров
Решения вопроса 1
У вас не обрабатывается не совпадение с условием. Не описано что вернуть из функции и по этому при не совпадении условия функция возвращает None:
``````def F(n):
if n > 2:
return G(n - 2)``````

Равносильно:
``````def F(n):
if n > 2:
return G(n - 2)
else:
return None``````

Но ожидается что из функции вернется число.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А что ваши функции возвращают по отрицательным веткам своих условий? Как вы ЭТО прибавляете?
Там же четко в сообщении сказано что присходит и в чем ошибка. Читайте же.
Ответ написан
Ваш ответ на вопрос

### Войдите, чтобы написать ответ

Похожие вопросы
от 100 000 до 150 000 ₽
от 80 000 до 120 000 ₽
Mircod Казань
от 80 000 ₽
22 янв. 2021, в 16:34
5000 руб./за проект
22 янв. 2021, в 16:23
50000 руб./за проект
22 янв. 2021, в 15:58
3000 руб./за проект