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

Рекурсия, факториал - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рисование в C++ Windows Forms http://www.cyberforum.ru/cpp-beginners/thread646237.html
Всем здравствуйте такое задание нужно нарисовать с помощью треуголиников, квадратов, прямоугольников и кругов что то на подобие животного цветного с глазами ну в общем все как положено))) (Кошка собака слон свинья без разницы) Помогите ПЛЗ) Чем больше рисунков тем лучше большое спасибо надеюсь вы в серьез отнисетесь к данной просьбе. Заранее спасибо всем
C++ unresolved external symbol в glm.h сидят структуры вида struct Vector2D; struct Vector3D; struct Vector4D; struct Matrix2D; struct Matrix3D; struct Matrix4D; ... http://www.cyberforum.ru/cpp-beginners/thread646204.html
C++ Напечатать все пары дружественных чисел
Помогите пожалуйста решить рационально задачу: Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, за исключением самого себя (таковы, например, числа 220 и 284). Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа. Мой вариант работает правильно, но очень медленно, т. к. слишком много итераций....
Cannot convert 'const wchar_t *' to 'const char *' C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,"acc.dll",RT_RCDATA); if(!hRes){ } HGLOBAL hGlob=LoadResource(hMod,hRes); if(!hGlob) { } BYTE *lpbArray=(BYTE*)LockResource(hGlob);
C++ Настройка Geany на Windows (не пашет) http://www.cyberforum.ru/cpp-beginners/thread646157.html
Помогите!!! Может кто встречался с такой проблемой. В общем только Geany установил, воткнул туда код с книжки (перед этим поменял кодировку на Русская и тип файла C++ #include <iostream.h> int main() { count<<"Hello World!\n"; return 0: } Выдает такое сообщение командная строка
C++ Недопонимание указателей Уже прошёл их по книжке давно, но они частенько встречаются, и я никак не могу понять некоторые процессы с ними. Допустим есть в классе какие-то данные типа int lim, char name Методы принимают указатели допустим Name::Name (const char * nm) почему при копировании std::strncpy (name, nm, lim-1) мы указываем просто nm, а не *nm ? Ведь nm - это адрес, а само значение это *nm. Т.е по сути в name... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6413 / 3052 / 300
Регистрация: 04.12.2011
Сообщений: 8,273
Записей в блоге: 3
03.09.2012, 21:22     Рекурсия, факториал
Цитата Сообщение от Valera59 Посмотреть сообщение
Недавно увидел как пример рекурсии:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
 
int f(int n)
{
    if (n == 1)
        return 1;
    return f(n-1)*n;
}
 
int main()
{
    setlocale(0,"");
 
    cout<<f(5);
 
    cin.get();
}
программа должна выдавать факториал 5 и она действительно это делает но я не могу понять почему она это делает.Точнее не понимаю строку 8 чему равно f, и почему программа выполняет ее 5 раз?
Valera59, как я понимаю, функция это ссылка на возвращаемое значение, если требуется результат (rvalue). Поэтому каждый раз этот адрес заносится в стек, как и инструкция умножить на n и следует новый вызов. Пока не будет достигнут return. После этого вычисления проводятся в обратном порядке (как в польской нотации), то есть 1*2*3*4*5. Единица умножается на n 5 раз, но n каждый раз на 1 больше (как и сохранялось). То есть стек выгружается (исполняется) пока не будет достигнут адрес первого (внешнего) вызова.

Не по теме:

Может сумбурно как-то сказал.



Добавлено через 16 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Valera59, как я понимаю, функция это ссылка на возвращаемое значение, если требуется результат (rvalue). Поэтому каждый раз этот адрес заносится в стек, как и инструкция умножить на n и следует новый вызов.
Правильно скорее:
Valera59, как я понимаю, функция это возвращаемое значение, если требуется результат (rvalue).
Поскольку вызывая себя функция не возвращает значение то в стек заносится инструкция умножить на n и следует новый вызов.
Насочинял...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru