Jabutyf
Апрель 19, 2014 11:22:10
в общем обучаюсь. Искал всюду взглянуть (сам я уже за 5 часов устал пробовать) как реализовать последовательность. В основном, где я встречал код - там был тип когда функция строилась с введенного значения, то есть не на оригинальной последовательности.
Собственно в чем вопрос. Не получается зациклить последовательность.
строю def fibon(n). где n это максимальное число в последовательности. То есть определяю переменные а=0, б=1 и если n больше единицы, то начинаю принтом выводить. а+б=с, если c<n то a=b, b=c и так же принтом вывожу. Смысл такой (задание было другое, просто решил покреативить)
необходимо, чтобы при указании значения скажем fibbo(2000) была такая реакция
1
1
2
3
5
8
…
1597 end
в идеале хотелось бы их еще пронумеровать. чтобы было ясно, какое это число по счету. В общем с 4 утра вожусь и пока на исходной можно сказать и остался.
Помогайте пацаны) благодарю заранее)
Jabutyf
Апрель 19, 2014 11:28:02
вопрос стоит так, что мне нужно вращать фибоначчи до определенного момента) а он у меня застревает)
ajib6ept
Апрель 19, 2014 13:41:52
def fibonacci(max):# генератор (а не функция, т.к. оператор return заменён на yield)
a, b = 0, 1
while a < max:
yield a# return a, + запоминаем место рестарта для следующего вызова
a, b = b, a + b# параллельное присваивание, которое выполняется одновременно и параллельно
for n in fibonacci(100): # используем генератор fibonacci() как итератор
print n, # печатаем все числа Фибоначчи меньшие 100 через пробел
по запросу “фибоначчи python” в Google первая ссылка на
http://py-algorithm.blogspot.ru/2011/04/blog-post_04.html откуда и взято решение
Jabutyf
Апрель 19, 2014 21:01:34
спасибо))
Jabutyf
Апрель 19, 2014 21:03:33
единственное, я не понял эту манеру синтаксиса. a, b = 0, 1, a, b = b, a + b
ajib6ept
Апрель 20, 2014 05:46:04
Запись в сокращенном виде
a, b = 0, 1
#т.е.
a = 0
b = 1
a, b = b, a + b
#т.е.
a = b
b = a+b
Jabutyf
Апрель 20, 2014 22:44:36
я так изначально и понял, но почему-то когда я выполнял схожую функцию и расписал ее именно в такой последовательности, она почему-то не работала. А в a,b=b,a+b работала… видимо шведскую стенку пора покупать с молотком
Jabutyf
Апрель 21, 2014 01:40:59
ееее
сам написал в итоге так
def fibn(n):
a,b=0,1
while a<n:
print a,
a,b=b,a+b