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

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

Восстановить пароль Регистрация
 
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 98
21.02.2014, 05:11     Каким образом в переменную записывается результат каждого рекурсивного вызова? #1
Всем привет! Подскажите по данной задачи, немного недопонимаю:

ФАКТОРИАЛ:
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++ НЕ записывается содержимое файла в переменную типа char
C++ Каким образом записать слеш в символьную переменную
Просуммировать члены последовательности с использованием рекурсивного вызова C++
C++ В переменную массива записывается не то значение
C++ Не записывается массив в переменную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castorsky
 Аватар для castorsky
1948 / 1038 / 78
Регистрация: 29.11.2013
Сообщений: 3,262
21.02.2014, 05:27     Каким образом в переменную записывается результат каждого рекурсивного вызова? #2
возьми ручку и листик. Распиши последовательно что происходит на примере FACT(3), прямо по шагам кода программы. И все поймешь сам.

Добавлено через 14 секунд
умножение на ноль дает ноль.
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 98
21.02.2014, 05:51  [ТС]     Каким образом в переменную записывается результат каждого рекурсивного вызова? #3
Если два return в функции то между ними идет умножение?
castorsky
 Аватар для castorsky
1948 / 1038 / 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
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.02.2014, 16:30     Каким образом в переменную записывается результат каждого рекурсивного вызова? #5
Ты знаешь, что делает инструкция return? Скажи, как ты её понимаешь? Я не уверен, что правильно!
Максим2014
5 / 5 / 2
Регистрация: 10.07.2013
Сообщений: 98
21.02.2014, 19:40  [ТС]     Каким образом в переменную записывается результат каждого рекурсивного вызова? #6
Всмысле я? Возвращает значение функции в ту функцию которая её вызывает - вроде так!
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.02.2014, 19:58     Каким образом в переменную записывается результат каждого рекурсивного вызова? #7
Ну и где тогда может быть суммирование? При чём тут вообще сумма?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 20:26     Каким образом в переменную записывается результат каждого рекурсивного вызова?
Еще ссылки по теме:

Число не записывается в переменную C++
Не записывается текущая директория в переменную C++
C++ Результат не записывается в файл

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

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

Текущее время: 02:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru