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

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

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

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

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

собственно вопрос
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 18:27     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек?
Посмотрите здесь:

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

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

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

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

Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами - C++
Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами #include <iostream> #include <stdlib.h> ...

Стек как структура - C++
Задача основана на использовании стека не как класса, а как структуры, введенной вручную. Пытался просто вывести на экран значения поля...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.05.2011, 20:13     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #2
А что вам стек? Итеративно уже вычислять не айс? Формула простая, цикл простой.
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 20:23     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #3
trebor, Вы наверное имели ввиду, чтобы не переполнялся тип int? используйте long long int.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.05.2011, 20:31     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #4
Или длинную арифметику, чтоб наверняка (если вопрос был действительно об этом).
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 17:28  [ТС]     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #5
Дело в том что я сделал функцию вычисления рекурсивной, и на небольших числах она работает нормально, но куда я сдаю не проходит по лимиту памяти. Может подскажете, как ее переделать с помощью итерации?
diagon
Higher
1927 / 1193 / 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 начинает немного неправильно считать, т.к. константа неточная.
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 18:06  [ТС]     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #7
Мерси.Да на acmp.А где вы про эту связь прочитали?
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 19:16     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #8
Википедия=)
А что за задача на acmp с субфакториалом? Я решал там только на обычный факториал о_О
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2011, 20:07     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек?
Еще ссылки по теме:

Как развернуть стек? - C++
Как вывести элементы из стека в порядке их поступления? через функцию не получается #include &quot;stdafx.h&quot; #include &quot;iostream&quot; ...

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

Как съедать мышки(список, стек)? - C++
N серых и М белых мышей сидят в кругу. Кошка ходит по кругу по часовой стрелке и съедает каждую S-ую мышку. В первый раз счет начинается с...

Стек и куча: как все это работает? - C++
Добрый вечер, подскажите пожалуйста хорошую литературу (сайты) по куче и стеку. Как оно все работает? Насколько я понял все статические...


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

Или воспользуйтесь поиском по форуму:
trebor
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
05.06.2011, 20:07  [ТС]     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек? #9
задача #31.Неподвижные точки.Её просто можно ещё с помощью перебора решить, вот вы наверное так и сделали.Спасибо.
Я кстати когда смотрел не заметил её на википедииПросто эти скобочки, квадритики иногда в смятение вводят
Yandex
Объявления
05.06.2011, 20:07     Как раелизовать вычисление субфакториала на си, чтобы не переполнялся стек?
Ответ Создать тему
Опции темы

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