• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Приглашаем на KubanCTF

    Старт соревнований 14 сентября в 10:00 по москве

    Ссылка на регистрацию в соревнованиях Kuban CTF: kubanctf.ru

    Кодебай является технологическим партнером мероприятия

Реализация Рекурсивных Функций (задачи)

  • Автор темы Facktor88
  • Дата начала
F

Facktor88

Добрый день , помогите решить задачи :
================================================================================
====
1.Реализовать рекурсивную функцию вычисления степени из числа (Pow)

2.Реализовать рекурсивную функцию линейного поиска в массиве (SearchInArray)

3. Реализовать рекурсивную функцию , которая принимает номер числа Фибоначчи , и возвращает само число.
================================================================================


Мои примеры функций :

1. (Pow)

C++:
int pow(int a, int n);
{
int f = 1;
for (int i = 1; i <= n; i++)
f = f*a;
return f;


2.int searchElement(int a[], const int n, const int key);
C++:
{
for (int i = 0; i < n; i++)
{
if (a[i] == key)
{
return i;
}
}
return -1;
}
====================================================================


Вот несколько примеров рекурсии на факториале (преподавателя) :

int fact(int n)
C++:
{
int res = 1;
while (n > 0)
{
res *= n;
n--;
}
return res;
}

int fact(int n)
{
if (n > 0)
{
return n * fact(n - 1);
}
return 1;
}
int factor(int n)
{
return n > 0 ? n * factor(n - 1) : 1;
}
void main()
{
cout << fact(5) << endl;
}
Мне нужно вот таким образом реализовать вышеуказанные функции (рекурсивно) .

Заранее благодарен.

P.S. Ссылки и указатели еще не учили, прошу их не использовать.
 
W

Whatka

и что не понятно??
это же программирование-учись думать
проследи по какому алгоритму преподователь преобразовывал цикл в рекурсию
 
R

rrrFer

Что конкретно не получается?

C++:
int pow(int a, int n) {
if (a == 0) return 0;
if (n == 0) return 1;
if (n < 0) return pow(a, n + 1) / a;
return pow(a, n - 1) * a;
}
аналогично со всеми остальными задачами. Я код не проверял, возможны опечатки, но суть должна быть ясна.

Вот тут: есть статья на тему рекурсии и циклов. Примеры там не только на С++, но и на С++ тоже есть. Хотя, статья не очень хорошая (не знаю почему год назад я писал так плохо, каюсь (( )
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!