Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Рекурсия - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дружественные бинарные операторы http://www.cyberforum.ru/cpp-beginners/thread981626.html
//прототипы внутри класса friend bool operator==(const Polynomial&, const Polynomial&); Polynomial &operator=(const Polynomial&); //Оператор присвоения Polynomial& Polynomial::operator=(const...
C++ Ошибка при "сборе мусора" . Повреждение кучи Привет ребята! Я совсем скверно знаю плюсы и не смотря на несколько лет довольно успешной работы в ИТ так и не заставил себя заниматься этим языком "вплотную", поэтому прошу помощи у вас, как... http://www.cyberforum.ru/cpp-beginners/thread981623.html
Описать функцию, что подсчитывает количество чисел в списке C++
содержающуя процедура формирования списка и функцию, подсчитывает количество чисел в списке, которые соответствуют Вашему варианту(13вариант)
C++ Мультисписок на базе бестиповых указателей (оцените код и подскажите что исправить )
Здравствуйте , Задача стояла реализовать мультисписковую структуру на базе массива бестиповых указателей. Структура примерно выглядит так прикрепленном изображении. Делал отдельный шаблонный...
C++ Указатели С++ http://www.cyberforum.ru/cpp-beginners/thread981607.html
Здравствуйте) Помогите пожалуйста, нужно написать программу, в которой нужно имитировать функцию strchr(используя только указатели и не используя ) и пользователь вводит строку сам
C++ Pomagite naiti summu Помогите найти сумму 1 + (1/(k!)) k от 1 до n Console.Write("Vvedite n = "); double n = int.Parse(Console.ReadLine()); double summa = 0; for (int i = 1; i <=... подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94

Рекурсия - C++

19.10.2013, 14:49. Просмотров 575. Ответов 5
Метки (Все метки)

Есть такой код. В нем рисуется что то вроде линейки. Данный код предназначен для иллюстрации работы рекурсии. Может мне кто нибудь объяснить. Вот при первом вызове subdivide палочка ставится посередине, значение середины 32. Далее палочки ставятся на 32, 16 и 48, ок. Но что происходит потом я не могу понять. Происходит вызов subdivide с level 3, она ставит палочку на 32 и вызывает subdivide с level 2, которая, в свою очередь ставит палочку на 16 и вызывает subdivide с level 1, которая ставит палочку на значении 8. Но как в этом рекурсивном цикле палочка оказывается на значении 24 я не понимаю. Откуда она его берёт!?!? Объясните пожалуйста, всю голову сломал уже....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// ruler.cpp -- using recursion to subdivide a ruler
#include <iostream>
const int Len = 66;
const int Divs = 6;
void subdivide(char ar[], int low, int high, int level);
int main()
{
    char ruler[Len];
    int i;
    for (i = 1; i < Len - 2; i++)
        ruler[i] = ' ';
    ruler[Len - 1] = '\0';
    int max = Len - 2;
    int min = 0;
    ruler[min] = ruler[max] = '|';
    std::cout << ruler << std::endl;
    for (i = 1; i <= Divs; i++)
    {
        subdivide(ruler,min,max, i);
        std::cout << ruler << std::endl;
        for (int j = 1; j < Len - 2; j++)
            ruler[j] = ' ';  // reset to blank ruler
    }
    // std::cin.get();
    std::system("PAUSE");
    return 0;
}
 
void subdivide(char ar[], int low, int high, int level)
{
    if (level == 0)
        return;
    int mid = (high + low) / 2;
    ar[mid] = '|';
    std::cout << "Recursion at level: " << level << std::endl
    << "Mid = " << mid << std::endl;
    subdivide(ar, low, mid, level - 1);
    subdivide(ar, mid, high, level - 1);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru