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

Факториал через рекурсию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализовать один из вариантов динамических структур http://www.cyberforum.ru/cpp-beginners/thread621234.html
Нужно использовать динамическую структуру, есть 4 варианта : 1. односвязный список 2. двусвязный список 3. кольцевой 4. стек любой из них. Как это сделать? #include <cstdlib> #include <iostream>
C++ Подсчитать суммы в массиве Заданный в файле массив целых чсел делится на три части двумя элементами - макс. и мин. по величине. Определить суммы этих частей. Программа ничего не выдает. Помогите найти ошибку! #include "StdAfx.h" #include <iostream> #include <fstream> using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread621219.html
C++ Дано слова определяют одинаковы ли второй четвертый символ
Дано слова определяют одинаковы ли второй четвертый символ
C++ Найти наименьшее целое положительное число K, квадрат которого превосходит N
Не получается решить задачи.... 2)Дано целое число N (> 0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K2 > N. Функцию извлечения квадратного корня не использовать.
C++ Вывести знак Зодиака, соответствующий данной дате http://www.cyberforum.ru/cpp-beginners/thread621163.html
Задания: 3) Даны два целых числа: D (день) и M (месяц), определяющие правильную дату. Вывести знак Зодиака, соответствующий этой дате: «Водолей» (20.1–18.2), «Рыбы»(19.2–20.3), «Овен» (21.3–19.4), «Телец» (20.4–20.5), «Близнецы» (21.5–21.6), «Рак»(22.6–22.7), «Лев» (23.7–22.8), «Дева» (23.8–22.9), «Весы» (23.9–22.10), «Скорпион»(23.10–22.11), «Стрелец» (23.11–21.12), «Козерог» (22.12–19.1).
C++ Найти количество отрезков B, размещенных на отрезке A Задания: 4) Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A. подробнее

Показать сообщение отдельно
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
09.07.2012, 12:16  [ТС]     Факториал через рекурсию
Цитата Сообщение от defer Посмотреть сообщение
это значит - если n=1 или n=0
так код и без первой части работает корректно, для чего она нам?
И всё равно я никак не могу понять как работает return (!n ? 1 : n*fact(n-1));
Т.е пока n>0 вычисляется n*fact(n-1), как только n=0, то ведь функция должна вернуть 1. почему она возвращает факториал о_О


Ах да defer, ещё на счёт твоего кода, там нужно замениь return(i) на return 1, тогда работает корректно
C++
1
2
3
4
5
6
7
8
9
10
int fact(int i)
{
  if(i==0)
  return 1;
  else
  {
    i=i*fact(i-1);
    return(i);
  }
}
А так этот код тот же самый, что и сокращенный return (!n ? 1 : n*fact(n-1)) В нём же тоже пока в else уменьшается i, и когда доходит до 0, т.е i=0, почему возвращается произведение, а не 1?
 
Текущее время: 09:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru