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

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

Войти
Регистрация
Восстановить пароль
 
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
#1

Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? - C++

18.05.2011, 18:27. Просмотров 752. Ответов 8
Метки нет (Все метки)

собственно вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 18:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? (C++):

при работе рекурсивной функции заканчивается стек и программа соответственно; как сделать так, чтобы она писала "стек закончился"? - C++
Сабж g++ 4.5.0

Как заполнить бинарное дерево, чтобы оно не превратилось в обычный стек - C++
вот допустим написал заполнение данных в виде бинарного дерева, и в слуае если данные записываются по возрастанию , 1,2,3,4,5.... и тд, то...

Стек. Что добавить в код, или как изменить его, чтобы в нём были структуры ? - C (СИ)
Программа выводит второй стек, состоящий из положительных элементов первого стека. Преподаватель сказал, что я сделал программу, как...

Стек. Что добавить в код, или как изменить его, чтобы в нём были структуры ? - C++
Программа выводит второй стек, состоящий из положительных элементов первого стека. Преподаватель сказал, что я сделал программу, как...

Раелизовать медиаплеер на visualstudio желательно 2005 - Visual Basic .NET
Ребятки, помогите, нужно реализовать медиаплеер на visualstudio желательно 2005. Хочется, чтобы можно было добавлять несколько песен,...

Возможно ли раелизовать вот такую textarea с кнопкой? - HTML, CSS
кнопка находится внутри текстарии, должна нажиматься ну и текст её должен обтекать каким то образом.

8
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.05.2011, 20:13 #2
А что вам стек? Итеративно уже вычислять не айс? Формула простая, цикл простой.
0
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 20:23 #3
trebor, Вы наверное имели ввиду, чтобы не переполнялся тип int? используйте long long int.
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.05.2011, 20:31 #4
Или длинную арифметику, чтоб наверняка (если вопрос был действительно об этом).
0
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 17:28  [ТС] #5
Дело в том что я сделал функцию вычисления рекурсивной, и на небольших числах она работает нормально, но куда я сдаю не проходит по лимиту памяти. Может подскажете, как ее переделать с помощью итерации?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 17:47 #6
C++
1
2
3
4
5
6
unsigned long long mypow(int a,int b){
    int temp=a;
    while (--b)
        a*=temp;
    return a;
}
Вообще факториал должен очень быстро вычисляться, скорее всего он просто не влазит в int.
P.S. не на ******** сдаете случаем?
...
Тьфу
Не то совсем выложил
Извиняюсь

Добавлено через 13 минут
Вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
long double fact(int a){
    long double b=1;
    for (int i=1; i <=a;i++)
        b*=i;
    return b;
}
int main(){
    int a,b;
    std::cin >> a ;
    std::cout << (unsigned long long)((fact(a)+1)/2.7182818284590452);
    return 0;
}
От !19 начинает немного неправильно считать, т.к. константа неточная.
0
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 18:06  [ТС] #7
Мерси.Да на acmp.А где вы про эту связь прочитали?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 19:16 #8
Википедия=)
А что за задача на acmp с субфакториалом? Я решал там только на обычный факториал о_О
1
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 20:07  [ТС] #9
задача #31.Неподвижные точки.Её просто можно ещё с помощью перебора решить, вот вы наверное так и сделали.Спасибо.
Я кстати когда смотрел не заметил её на википедииПросто эти скобочки, квадритики иногда в смятение вводят
0
05.06.2011, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2011, 20:07
Привет! Вот еще темы с ответами:

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора? - C++
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2. В какой памяти он хранится и почему...

Как в Mathcad 14, сделав вычисление 7*x+37solve,x=-5.285714286 сделать так чтобы автоматически присвоилось x:= -5.28 или x=-5.28 - MathCAD
Как в Mathcad 14, сделав вычисление 7*x+37solve,x=-5.285714286 сделать так чтобы автоматически присвоилось x:= -5.28 или x=-5.28


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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