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

Тема в разделе "C/C++/C#", создана пользователем Facktor88, 19 фев 2014.

  1. Facktor88

    Facktor88 New Member

    Регистрация:
    10 фев 2014
    Сообщения:
    2
    Симпатии:
    0
    Добрый день , помогите решить задачи :
    ================================================================================
    ====
    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. Ссылки и указатели еще не учили, прошу их не использовать.
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    и что не понятно??
    это же программирование-учись думать
    проследи по какому алгоритму преподователь преобразовывал цикл в рекурсию
     
  3. Facktor88

    Facktor88 New Member

    Регистрация:
    10 фев 2014
    Сообщения:
    2
    Симпатии:
    0
    Классный ответ спасибо , теперь все точно стало понятно!
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Что конкретно не получается?

    Код (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;
    }
    аналогично со всеми остальными задачами. Я код не проверял, возможны опечатки, но суть должна быть ясна.

    Вот тут: http://pro-prof.com/archives/813 есть статья на тему рекурсии и циклов. Примеры там не только на С++, но и на С++ тоже есть. Хотя, статья не очень хорошая (не знаю почему год назад я писал так плохо, каюсь (( )
     
Загрузка...

Поделиться этой страницей