|
|
|
| Здравствуйте!
Есть готовый текст программы:
-----------------------
#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 () можно было написать и в начале программы...? | |
|
|
|
|
|
|
|
для: 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[]);
|
| |
|
|
|
|
|
|
|
для: 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 и вернет его, и т.д. | |
|
|
|