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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 113
#1

Каким образом в переменную записывается результат каждого рекурсивного вызова? - C++

21.02.2014, 05:11. Просмотров 276. Ответов 7
Метки нет (Все метки)

Всем привет! Подскажите по данной задачи, немного недопонимаю:

ФАКТОРИАЛ:
C++
1
2
3
4
5
int FACT(int n)
{int res;
if(n==1) return 1;
res=n*FACT(n-1);
return(res);    }
Почему когда я вместо return 1 пишу return 0 он выводит ноль, а когда 1 - выводит результат?
Каким образом в переменную res записываеться результат каждого рекурсивного вызова?
Как я понимаю он суммируется что-ли? Допустим факториал равен 4, значит res=(4*3)+(4*2)+(4*1);
хотя тут просто присваиваем.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 05:11     Каким образом в переменную записывается результат каждого рекурсивного вызова?
Посмотрите здесь:
C++ Каким образом записать слеш в символьную переменную
Просуммировать члены последовательности с использованием рекурсивного вызова C++
Число не записывается в переменную C++
C++ Не записывается массив в переменную
C++ В переменную записывается пустота
C++ Результат не записывается в файл
C++ Результат не записывается в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castorsky
1950 / 1040 / 78
Регистрация: 29.11.2013
Сообщений: 3,262
21.02.2014, 05:27     Каким образом в переменную записывается результат каждого рекурсивного вызова? #2
возьми ручку и листик. Распиши последовательно что происходит на примере FACT(3), прямо по шагам кода программы. И все поймешь сам.

Добавлено через 14 секунд
умножение на ноль дает ноль.
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 113
21.02.2014, 05:51  [ТС]     Каким образом в переменную записывается результат каждого рекурсивного вызова? #3
Если два return в функции то между ними идет умножение?
castorsky
1950 / 1040 / 78
Регистрация: 29.11.2013
Сообщений: 3,262
21.02.2014, 09:02     Каким образом в переменную записывается результат каждого рекурсивного вызова? #4
Код
    f(3)
    if (3 == 1)
        return 1;
    else
        3 * f(2);
        if (2 == 1)
            return 1;
        else
            2 * f(1);
            if (1 == 1)
                return 1;
            * 2;
        * 3;
    == 6;
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
21.02.2014, 16:30     Каким образом в переменную записывается результат каждого рекурсивного вызова? #5
Ты знаешь, что делает инструкция return? Скажи, как ты её понимаешь? Я не уверен, что правильно!
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 113
21.02.2014, 19:40  [ТС]     Каким образом в переменную записывается результат каждого рекурсивного вызова? #6
Всмысле я? Возвращает значение функции в ту функцию которая её вызывает - вроде так!
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
21.02.2014, 19:58     Каким образом в переменную записывается результат каждого рекурсивного вызова? #7
Ну и где тогда может быть суммирование? При чём тут вообще сумма?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 20:26     Каким образом в переменную записывается результат каждого рекурсивного вызова?
Еще ссылки по теме:
Не записывается текущая директория в переменную C++
C++ В переменную массива записывается не то значение
C++ НЕ записывается содержимое файла в переменную типа char
Каким будет значение переменной k после вызова функции f в main: C++
При вводе в переменную через scanf число 0.5 записывается как 0 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 113
21.02.2014, 20:26  [ТС]     Каким образом в переменную записывается результат каждого рекурсивного вызова? #8
Когда создавал тему просто не знал что это именно так работает!))
Yandex
Объявления
21.02.2014, 20:26     Каким образом в переменную записывается результат каждого рекурсивного вызова?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru