Веб программирование

Ряд Фибоначчи

 
 

Рассмотрим ряд чисел Фибоначчи. Сначала немного из истории появления этой последовательности. В 1202 году итальянский математик Леонардо Пизанский по прозвищу Фибоначчи написал «Книгу об абаке», а 1228 году он основательно ее переработал. Абак – это доска с канавками, в которых располагались камешки. С каждой следующей канавкой росло старшинство разряда числа. Абак был прообразом русских счет с костяшками. Эта книга об искусстве счета стала самым значительным математическим произведением на несколько столетий вперед. В этом объемистом труде содержатся почти все арифметические и алгебраические достижения того времени, алгоритмы операций над числами. Именно из этой книги европейцы познакомились с индийской системой цифр, которой мы пользуемся в настоящее время. В «Книге об абаке» есть много оригинальных задач, одна из них – задача о кроликах:

«Сколько пар кроликов рождается за год от одной пары, если через месяц пара производит на свет другую, а рождают кролики со второго месяца после своего рождения?»

Результатом решения этой задачи получается следующая интересная последовательность:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ...

В этой числовой последовательности каждый ее элемент равен сумме двух предыдущих:

an = an-1 + an-2

Причем первые два элемента последовательности определены как:

a1 = a2 = 1

Построим программу, выводящую на экран ряд Фибоначчи. Для вычисления следующего элемента ряда программа должна помнить два предыдущих элемента. Таким образом, необходимо три переменных, значения которых нужно будет одновременно хранить в памяти.

int a, b, c, n; //резервирование памяти

a = 1;

b = 1;

c = 1;

Label1->Caption = Label1->Caption + " " + c;

for (n=0; n<11; n++) //цикл ДЛЯ

{

Label1->Caption = Label1->Caption + " " + c;

c = a + b; //вычисление следующего элемента ряда

a = b; //смещение первого предыдущего вправо по ряду

b = c; //смещение второго предыдущего вправо по ряду

}

Запустите программу на выполнение – на экране появится ряд чисел Фибоначчи. Эта программа построена на основе обмена переменными своими значениями. Поэтому ни в один момент времени вся последовательность целиком не будет находиться в памяти. Будет лучше, если выделить для данной последовательности одномерный массив. Тогда программа может выглядеть так:

int a[12]; //резервирование памяти для одномерного массива

a[0] = 1;

a[1] = 1;

Label1->Caption = Label1->Caption + a[0] + " " + a[1];

for (int n=2; n<12; n++)

{

a[n] = a[n-1] + a[n-2]; //вычисление следующего элемента ряда Фибоначчи

Label1->Caption = Label1->Caption + " " + a[n];

}

Теперь после выполнения программы ряд Фибоначчи будет храниться в памяти! Попробуйте увеличить число элементов этой замечательной последовательности.


Есть вопросы? Спроси на нашем форуме!!
pjp07190 [07.11.2014 15:03]

22-ой член последовательности Фибоначчи равен 28657, далее будет переполнение для int. Поэтому, если хотим посмотреть дальше, то нужно менять тип переменных массива.

bigcamagan90 [13.11.2014 10:03]

Спасибо.

pjp07190 [13.11.2014 15:53]

А в связи с чем интерес к этому ряду? Или чисто математический?

bigcamagan90 [25.11.2014 22:24]

Вы вы наверное думаете, что программы должны работать только на нужды банка или рекламы? Не думаю. В нашей жизни есть вещи поважнее. Попробую вас убедить в этом.

bigcamagan90 [25.11.2014 22:26]

Программирование и математика - это звенья одной цепи, имя которой Логика. Если вы этого не понимаете, то никогда не станете программистом. Пусть вы добьетесь больших успехов в программировании чем я, но вы не сможете осмыслить зачем вы вы программируете. Фридрих Энгельс сказал, что в мире нет ничего кроме движущейся материи. Он близко подошел к истине. Но думаю что материей и ее законами движения правит все-таки Цифра. То-есть наш Мир в основе своей является цифровым. Вы спросите - почему? Я не могу ответить на этот вопрос. Это все равно, что спросить - почему во вселенной существуют только положительные и отрицательные заряды? Ответ предельно прост - потому что так устроена наша Вселенная. И поэтому я считаю, что все что есть в нашем мире можно перевести в нолики и единицы. Правда человечество пока не может справиться с этой задачей. Но я чувствую, что это именно так - наш мир, это Мир Цифровой. Хотя мы часто говорим, что кирпич - это реальный мир, а вот мысль, это нечто виртуальное. На самом деле все это не имеет между собой какой либо грани. Это одно и тоже. Просто, чтобы понять как работает двигатель внутреннего сгорания - человек его разбирает на отдельные части, чтобы понять как он работает. Но ведь после разборки он просто перестанет работать. Поэтому не стоит разбирать мир на кусочки - это реальность, а это нечто из виртуального мира. Мир - един. Он не может существовать хотя бы без единой своей крошки.

Stertor370 [25.11.2014 23:30]

Тонкий тролль. Ни хуя не понял из его философии.

pjp07190 [26.11.2014 08:29]

bigcamagan я так не думаю, просто спросил. Спасибо за философское эссе, но оно, без обид, сыровато и в нем много эклектики. Мир сам по себе и может успешно существовать и без нас и без наших цифр. Все что мы видим и оцифровываем - это модели нашего сознания, которые конечно отражают Мир, НО В ТОЙ МЕРЕ В КАКОЙ НАМ ЭТО НЕОБХОДИМО ДЛЯ СУЩЕСТВОВАНИЯ. Собака, например, видит мир монохромным. Объясните ей, что такое цвет.

bigcamagan90 [26.11.2014 13:06]

Ремарка для pjp07190 и для других думающих, кроме...
Да, действительно мир может вполне комфортно существовать без нашей помощи и без нас. Писал ночью и получилось довольно сумбурно. Я хотел сказать следующее. Первична не материя в своем движении, а цифра, которая определяет устройство вселенной и ее изменения. Многие думают, цифра сидит только в компьютере и в мозге человека. Человек думает, что он придумал цифры. На самом деле цифры устроили мир. Нет, правильнее сказать цифры правят миром. Почему выражение "цифры устроили мир" неудачно? От сюда следует, что было начало мира. Думаю, что мир все таки бесконечен как пространстве так и во времени. Мне возразят - это невозможно представить. Ведь все имеет начало и конец. Думаю, что любой объект в мире, как и сам мир просто переходят из одной стадии в другую - это и есть развитие. Человек многое не мог представить. Например, что земля шарообразна, что масса, длина и время относительны, а не абсолютны, как думали до Эйнштейна. Цифра - это самая суть вселенной. Если это было бы не так, то мир бы был в виде сплошного хаоса. Ведь закон всемирного тяготения существовал всегда, хотя его открыл и написал на бумаге великий Ньютон. Это говорит о том, что цифра крепко сидит в мире без нас, независимо от наших познаний о нем. И не просто сидит, а управляет вселенной. И еще хочу возразить насчет субъективности восприятия окружающего мира собакой и человеком. Да субъективность присутствует всегда, это от того, что человек не сверх существо. Но чем глубже мы познаем мир, тем больше объективности в его восприятии. И вот тут субъективности становится меньше. Доказано, что цветов в мире не существует - это субъектный продукт нашего сознания. Но раз мы этот факт осознали, значит еще дальше продвинулись в сторону объективного познания мира.

pjp07190 [26.11.2014 14:35]

Ну что же свой взгляд на Мир, кстати от Пифагора. Только человек познает не Мир, его отражение (зеркало)своими органами чувств. То, что он его оцифровывает (отображение) в своей голове, это да. Цифра, как и другие математические образы, как то точка, прямая и т.д. суть элементы этой модели отражения. Ни цифры, ни точки, ни прямой в Мире не существует. Существует материя и законы ее движения. А то, что человек отображает эти законы в цифровой форме, вовсе не означает, что это нельзя сделать и по другому, например в аналоговом виде. Просто природе оказалось оптимальнее сделать нас такими с линейкой и циркулем и различающими цвета кстати.

bigcamagan90 [27.11.2014 11:37]

Понятно, что Пифагор это один из великих землян. Но все-таки человечество идет вперед, возникают новые воззрения на мир, Он сказал правильно. Я бы добавил, что это это зеркало еще и кривое. По законам геометрической оптики получается, чем дальше объект, тем меньше его размеры. Человек уже в раннем детстве исправляет свое субъективное наблюдение за удаленным объектом на его объективные размеры. Мы видим, что Земля плоская, но процесс познания исправил наше субъективное восприятие этого объекта на объективное, причем задолго до того как человек оказался в космосе. Не надо утверждать, что наше субъективное восприятие мира делает невозможным процесс познания.
Вы утверждаете, что цифру придумал человек. Нет - он ее открыл. Я думаю что Мироздание это бесконечная многомерная матрица в которой размещены, например, законы физики, генетический код живого существа. Где же размещена эта бесконечно-мерная матрица. Думаю в мозге человека, в компьютере, в воде, камне. В общем в материи. Эта матрица способна не только хранить информацию но и обрабатывать ее, в этом смысле материя разумна, причем несоизмеримо, невообразимо более разумна чем мозг собаки или человека. Уверен, что самым фундаментальным свойством движущейся материи является его информативность. Со временем подберу более подходящее название этому главному свойству материи. Если вспомнить о линейке, циркуле, осциллографе, ракете, компьютере - это инструменты в познании мира. Вспомните, а сколько изобретений человек своровал у природы. А вот математика это не изобретение, а открытие.

pjp07190 [27.11.2014 16:02]

Если называть цифрой символ изображающий число, то да это придумал человек (римские, арабские и др.)
Вы считаете, что человек, развиваясь, достиг такого уровня СВОЕГО РАЗУМА, что открыл число?

Stertor370 [27.11.2014 18:51]

Лалки ;)

bigcamagan90 [27.11.2014 19:51]

Не важно как изображаются цифры, которые образуют числа и крутятся в них. Не важно в какой системе счисления они работают. Главное что эти перво-кирпичики математики устанавливают определенный порядок в материи и в ее движении за счет законов вселенной. Законы вписаны в информационное пространство вселенной. Если бы эти законы не были вкраплены во временное пространство вселенной, то вселенная была бы совершенно другой. Я бы назвал вселенную пространством наполненным пустотой и материей. Причем пустота может быть заполнена другими видами материи, которые мы пока не можем обнаружить. Но ведь когда-то мы были неспособны обнаружить рентгеновы лучи. Итак - пространство, это не только вместилище для материи и времени, но и содержит в себе информацию. Причем информация первична, как и время.

bigcamagan90 [27.11.2014 22:12]

Не ответил на вопрос по поводу открытия числа. Число открыл человек для себя. Числа пронизывают вселенную независимо от нас.

pjp07190 [28.11.2014 09:02]

"Число открыл человек для себя."
Число понятно уже животным, которые не являются сознательными живыми существами. Хотя они его никак и не обозначают. Об этом свидетельствует масса экспериментов. Животное и даже птица, с ее плоским мозгом, различает численность предметов. Число - это когнитивная составляющая нашего сознания. К человеку оно перекочевало от своих животных предков. Все открытие человека связано с возникновением речи(языка) и письменности. Он начал обозначать числа символами на стенах пещеры. Потом нашлись гении, которые ввели правила арифметических действий, а дальше как снежный ком... до интегралов и производных.
Вы просто заходите с другого конца, говоря об информации, о чем никто и не спорит. Я то говорю о сознании и как человек отражает Мир. На самом деле эта проблема 21 века. Физики создали картину Мира, но нас с нашим СОЗНАНИЕМ в этой картине нет. Никто толком не может объяснить, что оно такое.

bigcamagan90 [28.11.2014 11:54]

Мне думается что сознание в принципе устроено так же как и современный компьютер. Правда компьютер пока жутко примитивен при сравнении с мозгом человека. Вы говорите о гениях, которые ввели правила арифметических действий. Они не ввели, а открыли эти правила для человека, которые как и числа являются одной из первичных составляющих нашего мироздания.

pjp07190 [28.11.2014 12:27]

"Мне думается что сознание в принципе устроено так же как и современный компьютер."
Да нет, голубчик. Компьютер предсказуем, он работает четко по ПО. А вот вы сможете четко сказать мне по какой траектории будет двигаться ваш указательный палец в следующие три секунды. Или какая мысль придет вам в голову минуту спустя.

bigcamagan90 [01.12.2014 03:56]

Сегодня вовсю идет работа над созданием искусственного интеллекта. Уже есть определенные успехи. Дело времени. А по поводу указательного пальца позволю себе процитировать самого себя:
http://bigcamagan.ru/urok-10/

Stertor370 [01.12.2014 12:29]

Хватит троллить, товарищи. Давайте лучше какой-нибудь проект вместе напишем. Я предлагаю написать плагин для среды Visual Basic - форматирование кода. Плагин должен быть написан на visual basic и выполнен в виде ActiveX библиотеки, которая будет подгружаться при старте. Плагин должен создавать пункт в меню - "Форматирование кода", при выборе этого пункта, код в редакторе будет отформатирован. Ну что, осилим?

pjp07190 [01.12.2014 13:56]

А зачем это практически нужно?

Stertor370 [01.12.2014 14:18]

Затем, что в среде разработки нет такой функции, а неформатированный код - зло.

pjp07190 [01.12.2014 14:24]

А что ты понимаешь под форматированием кода?

Stertor370 [01.12.2014 14:38]

Наивность плавно переходит в толстоту)
http://vbbook.ru/formatirovanie-isxodnogo-koda-na-vbscript/

pjp07190 [01.12.2014 15:17]

Это все хорошо для коротких фрагментов. А если If или For, например, начинается на одном листе, а заканчивается на пятом, то смысл теряется. Потом, если много вложенных If-ов или циклов, то весть текст смещается вправо и при наличии длинных строк тоже не совсем удобно.

Stertor370 [01.12.2014 15:47]

Мда... Пора бы мне покинуть сия вертеп, тут завёлся более искушённый тролль ;( Дай бог, чтобы он вытеснил модератора, и занял его место.


p.s. Если кто-то надумает помогать с форматом - пишите в лс.

pjp07190 [01.12.2014 16:02]

Вам не покинуть, а к врачу надо (психиатору). Но это не всегда помогает.

Stertor370 [05.12.2014 18:29]

Возможно, ты и прав: я не буду опровергать, но мне безразлично твоё мнение.

Тролль, тролль, только здесь не тролль, и вообще,хватит всё троллить, троллить...

Jason [08.08.2016 12:42]

pip07 для того чтобы код не был слишком громоздким используется разбиение кода с помощью функций ООП и разбиение на подключаемые файлы, и что вы имеете ввиду "листом" а4 или какой лист вы имеете ввиду?



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.