Был такой вопрос в университетском задании, связанном с последовательностью Хофштадтера. Это в основном говорит, что это целочисленная последовательность, бла-бла, и есть два значения для данного индекса n. Мужское значение [M (n)] и женское значение [F (n)].
Они определены как:
- М (0) = 0
- Р (0) = 1
- М (п) = п-Р (М (п-1))
- Р (п) = п-М (Р (п-1))
И нас попросили написать программу на python, чтобы найти мужские и женские значения последовательности заданного целого числа.
Итак, код, который я написал, был:
def female(num):
if num == 0:
return 1
elif num >0:
return num - male(female(num-1))
def male(num):
if num==0:
return 0
elif num >0:
return num - female(male(num-1))
И при выполнении такой командой, как
print male(5)
Работает без суеты. Но когда я пытаюсь найти значение n = 300, программа не выдает никаких результатов.
Поэтому я добавил метод print внутри одной из функций, чтобы выяснить, что происходит со значением num
[elif num>0:
print num ...
]
И это показывает, что значение num уменьшается до 1 и продолжает переключаться между 1 и 2, иногда достигая значений, таких как 6.
Я не могу понять, почему это происходит. Любое понимание было бы хорошо. Также, что я должен сделать, чтобы найти значения, относящиеся к большим целым числам. Заранее спасибо. Приветствия.