Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2009, 15:11   #1
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию Турбо Си

задача про рекурсию...

Дано натуральное число n. Определить n-ое число Фибоначчи. Числа Фибоначчи определяются
формулами f1 = f2 = 1; fn = fn-1 + fn-2 при n = 3, 4, …, то есть два первых члена равны единице, а
каждый следующий член является суммой двух предыдущих.


надо в турбо си сделать, у меня нету практики. в паскале вот делал, с помощью канешно:

Код:
uses crt;
Var
  n : integer;
  a : integer;
function fib(n: integer): integer;
 begin
       if n in [1..2] then fib:=1
      else
       fib:=fib(n-1)+fib(n-1)+fib(n-2);
    end;
begin
clrscr;
writeln('Vvedite chislo');
readln(n);
a:=fib(n);
writeln(a);
readkey;
end.
легче не бывает... дело даже не в легкости, просто я не пойму каким образом функция возвращает значения, если оно не одно к примеру... помогите плиз эту задачу переделать в турбо си вариант...

+ Определить минимальный и максимальный элемент последовательности, и где находятся эти числа. (из серии Файлы и обработка числовых и символьных последовательностей ) если у кого есть подобная задача, каким образом составить её???

Последний раз редактировалось Zid@ne; 18.05.2009 в 15:13.
Zid@ne вне форума Ответить с цитированием
Старый 18.05.2009, 15:17   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Zid@ne
просто я не пойму каким образом функция возвращает значения, если оно не одно к примеру
Что значит не одно?
Код:
#include <stdio.h>
#include <conio.h>

int fib(int n)
{
 if(n==1||n==2) return 1;
 else return fib(n-1)+fib(n-2);
}

int main()
{
int n;
scanf("%d",&n);
printf("\n%d\n",fib(n));

getch();
return 0;
}
Цитата:
+ Определить минимальный и максимальный элемент последовательности, и где находятся эти числа. (из серии Файлы и обработка числовых и символьных последовательностей ) если у кого есть подобная задача, каким образом составить её???
Мм.. А что тут вызвало сложности?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 18.05.2009 в 15:27.
Sazary вне форума Ответить с цитированием
Старый 18.05.2009, 15:38   #3
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

вот что значит не одно значение: Задание №5. Написать функцию, определяющую вид треугольника по трем
сторонам. Функция должна возвращать следующие значения:
1. Значение 1, если треугольник прямоугольный
2. Значение 2, если треугольник равнобедренный
3. Значение 6, если треугольник равносторонний
4. Значение 3, если треугольник прямоугольный и равнобедренный
5. Значение 0 во всех остальных случаях
[BR] а про последнюю задачу не пойму как создать эту последовательность...
Zid@ne вне форума Ответить с цитированием
Старый 18.05.2009, 15:41   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.05.2009, 16:38   #5
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

спасибо за ответ.огромное желание научится писать програмы. но многое непонятно вообще.объясните доступным языком: каким образом функция возвращает значения и ч ЧТО ТАКОЕ ПАРАМЕТРЫ ФУНКЦИИ? ДЛЯ ЧЕГО ОНИ НУЖНЫ? ГДЕ ИСПОЛЬЗУЮТСЯ?
Zid@ne вне форума Ответить с цитированием
Старый 18.05.2009, 16:42   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Zid@ne Ну вы же пишете программы в паскале?
Как там функция возвращает значения?
Код:
function fun : integer;
begin
fun := 1;
end;
Функция возвращает 1.
А в си так:
Код:
int fun
{
return 1;
}
return возвращает управление функции, которая вызвала текущую функцию.
Цитата:
Сообщение от Zid@ne
и ч ЧТО ТАКОЕ ПАРАМЕТРЫ ФУНКЦИИ? ДЛЯ ЧЕГО ОНИ НУЖНЫ? ГДЕ ИСПОЛЬЗУЮТСЯ?
А вот это я лучше учебника не объясню.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.05.2009, 17:31   #7
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

хорошо.. но ведь есть функции, которые возвращают значение и которые не возвращают... в чём их отличие? я не пойму термин "возвращение значений"... куда они возвращаются, зачем, откуда? тупые вопросы, но млин не пойму до конца никак...
Zid@ne вне форума Ответить с цитированием
Старый 18.05.2009, 17:38   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
хорошо.. но ведь есть функции, которые возвращают значение и которые не возвращают... в чём их отличие?
В этом и отличие.
Цитата:
я не пойму термин "возвращение значений"... куда они возвращаются, зачем, откуда?
Когда вы пишете, например:
Код:
k = fun(s);
вы вызываете функцию fun. Любая функция вызывается. При этом она берет себе управление.
После того, как функция что-то сделала, она должна вернуть управление в то место, откуда была вызвана.
При этом она может вернуть некоторое значение. А может и не возвращать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.05.2009, 17:48   #9
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

а зачем тогда токаие функции используются (которые не возвращают значений)?
Zid@ne вне форума Ответить с цитированием
Старый 18.05.2009, 17:52   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а зачем тогда токаие функции используются (которые не возвращают значений)?
А если функция просто должна что-то посчитать и вывести на экран?
Зачем ей что-то возвращать?

У любой функции есть тип возвращаемого значения. Даже у тех, которые ничего не возвращают (они имеют тип void)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Турбо Паскаль Maxsimo Паскаль, Turbo Pascal, PascalABC.NET 0 06.05.2009 17:05
Турбо паскаль Gabi Помощь студентам 2 24.12.2008 22:18
Турбо Паскаль Jondeer Помощь студентам 3 28.10.2007 12:42
Турбо Паскаль Jondeer Помощь студентам 5 27.10.2007 17:19