Форум: Форум C++Разное
Новые темы: 00
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нахождение чисел Фибоначчи
 
 автор: Ci_novice   (27.12.2007 в 20:01)   письмо автору
 
 

Здравствуйте!
Есть готовый текст программы:
-----------------------
#include <iostream.h>
long fib (int n)
{
if ((n == 0) || (n ==1))
return 1;
else
return (fib (n-1) + fib (n-2));
}
void main()
{
int n = 0;
for ( ; n <= 20; n++)
cout<<" "<<fib(n);
}
-------------------------
Я не могу разобраться с некоторыми строками. Понятно что последовательность чисел Фибоначчи выражается через F(n-1)+F(n-2). Что означает в этой программе - RETURN, почему со значением 1 (не TRUE ли это и зачем оно здесь)? Можно ли заменить его на другую команду, например через for? Также в 3-ей строке: if ((n == 0) || (n ==1)) Для чего ставится такое условие? И для чего написана функция void? Ведь она не возвращает значение, а main () можно было написать и в начале программы...?

  Ответить  
 
 автор: Фитч   (28.12.2007 в 01:48)   письмо автору
 
   для: Ci_novice   (27.12.2007 в 20:01)
 


if ((n == 0) || (n ==1)) // если n равно 0 или n равно 1
  return 1;

Означает, что если номер числа в последовательности 0 или 1 (похоже, что в данной программе числа пронумерованы с нуля), то вернуть 1.

main может быть описана практически где угодно в основном файле и может иметь вид:

void main();  // с этим, правда, согласны не все компиляторы
int main(); 
int main(int argc, cahr* argv[]);

  Ответить  
 
 автор: alex19921992   (28.12.2007 в 09:54)   письмо автору
 
   для: Ci_novice   (27.12.2007 в 20:01)
 

товарищ, это называется реурсия.

Если мы вызываем fib для N то он вызывает fib для N-1 и для N-2, то есть пытается получить значения для N-1 и N-2 а те в свою очередь вызывают еще...
и такое идет до тех пор пока N не будет равно 0 или 1 тогда функция вернет 1 и соответственно рекурсия для N==2 получит значение 2 и вернет его, и т.д.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования