Я довольно новичок в python, и я попытался использовать его, чтобы сделать программу для определения n-го термина для последовательности Stern-Brocot (вы можете посмотреть, что , и именно поэтому моя функция называется SBSeq). По какой-то причине, он не будет работать, и он приходит с ошибками, например:Созданная функция не работает (Python)
File "C:/Python27/Factorials.py", line 6, in SBSeq
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
который в конечном счете идет на это:
File "C:/Python27/Factorials.py", line 5, in SBSeq
if n == 1: return 1
RuntimeError: maximum recursion depth exceeded in cmp
Это исходный код.
import math
from math import ceil
def SBSeq(n):
if n == 1: return 1
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
Любая помощь будет оценена!
О.П. следующего вопроса имеет те же проблемы, как вы. Пожалуйста, проверьте: http://stackoverflow.com/questions/24997970/iterating-over-parts-of-the-stern-brocot-tree-in-python –
Ваш код даже не компилируется. Пожалуйста, отправьте правильный код. – juanchopanza
Я предполагаю, что функция вызывается с отрицательными входами, а для отрицательных входов нет раннего условия выхода, 'ceil (n/2) -1' выглядит подозрительно. Обратите внимание, что '0 * some_function()' не будет замыкаться на 0. –