|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 15:02 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Оптимизировать StackOverflow? Ваша функция будет сходиться только при x, и y натуральных. ЕвгенийВ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 07:54 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
LameUser, Понятное дело. Интересует общая методика, как тут избежать переполнения стека. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 08:55 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Вы порядок цифр себе представляете, когда степени возрастают в геометрической прогрессии? Этот интерес простой или практический? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 08:57 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
ЕвгенийВLameUser, Понятное дело. Интересует общая методика, как тут избежать переполнения стека.Убрать рекурсию, очевидно Любой рекурсивный алгоритм можно переписать на цикл - это фундаментальное свойство рекурсии. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 09:31 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
cdtyjvЕвгенийВLameUser, Понятное дело. Интересует общая методика, как тут избежать переполнения стека.Убрать рекурсию, очевидно Любой рекурсивный алгоритм можно переписать на цикл - это фундаментальное свойство рекурсии. Это общие слова. Нужно решение хотя бы не системное, а для этого конкретного случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 09:48 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
А какое математическое назначение у функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 10:53 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
PallarisА какое математическое назначение у функции? Чисто теоретическая задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 11:03 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
ЕвгенийВИнтересует общая методика, как тут избежать переполнения стека. Для начала Код: c# 1. 2. 3. 4.
Ну а в принципе - переписать на циклах ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 11:18 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
1) Ну как бы на равенство сравнивать числа с плавающей запятой не комильфо. Нужно вводить некую дельту. Так что сравнивать число с нулем бессмысленно. Для Double есть еще понятия отрицательный и положительный нули. 2) Далее, есть предположение, что x и y - натуральные целые числа. Если это так, нужно сменить тип параметров, и явно приводить значение Math.Pow 3) Что касается переполнения, то ИМХО это не аргумент отказываться от рекурсии. Глубина рекурсии будет достаточной до момента переполнения размера размерности числа. К тому же, если мне память не изменяет, оптимизация компилятора автоматически превращает хвостовую рекурсию в цикл. 4) С учетом ранее сказанного про переполнение размерности числа, можно заранее оценить максимальные значения параметров и выкидывать Exception на значения из некорректного диапазона. Но это так, мысли вслух, возможно и не нужно этого делать. 5) Ну и нужно бы дать какое-то осмысленное название функции ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 11:47 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Arm791) Ну как бы на равенство сравнивать числа с плавающей запятой не комильфо. Нужно вводить некую дельту. Так что сравнивать число с нулем бессмысленно. Для Double есть еще понятия отрицательный и положительный нули. Выше я писал, что задача представляет теоретический интерес, такие условности можно отстранить. Arm792) Далее, есть предположение, что x и y - натуральные целые числа. Если это так, нужно сменить тип параметров, и явно приводить значение Math.Pow См. выше. Arm793) К тому же, если мне память не изменяет, оптимизация компилятора автоматически превращает хвостовую рекурсию в цикл. F# или там Nemerle - да и то не всегда, нужно видоизменить даже при вычислении банального факториала, C# до этого еще не рос. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 12:12 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
ЕвгенийВВыше я писал, что задача представляет теоретический интерес, такие условности можно отстранить. С каких пор корректная работа с числами с плавающей запятой стала условностью? К тому же, без внятного описания ЧТО ЖЕ должна делать функция, её очень трудно оптимизировать правильно. Ну и самое главное, в вашей задаче без практического интереса, нет корректного выхода из рекурсии. Не учитываются отрицательные и дробные значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 12:18 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Arm79, Ну можно поменять типы на int, а Math.Pow на DB.GetAmountSumm(.....). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 12:24 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Arm79ЕвгенийВВыше я писал, что задача представляет теоретический интерес, такие условности можно отстранить. С каких пор корректная работа с числами с плавающей запятой стала условностью? К тому же, без внятного описания ЧТО ЖЕ должна делать функция, её очень трудно оптимизировать правильно. Ну и самое главное, в вашей задаче без практического интереса, нет корректного выхода из рекурсии. Не учитываются отрицательные и дробные значения. По коду фукнции очевидно, что человек взял тип double только потому что у него размерность выше, а так работа у него только с целыми неотрицательными идет. Если есть проблема с размерностью чисел и типами дынных - посмотрите тип BigInteger - появляется в .net, по-моему с версии 4.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 12:25 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
DS53По коду фукнции очевидно, что человек взял тип double только потому что у него размерность выше Отнюдь не очевидно. Хоть я тоже так предполагаю, но откидывать иные варианты не стоит. Работа с дробными числами тоже вполне возможна. Поэтому и говорю, без описания функции трудно понять, насколько корректно она реализована. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 12:29 |
|
Оптимизировать функцию.
|
|||
---|---|---|---|
#18+
Видимо нужно преобразовать как то в цикл, но как, что то не соображу.... Еще на ум приходит применить мемоизацию, так, как например при передаче с параметрами x=3 и y=3 функция будет вызвана 39 раз с такими параметрами. 0 1 0 1 0 1 0 1 0 1 0 1 0 2 0 2 0 2 0 3 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 3 2 0 2 0 2 0 2 1 2 1 2 1 2 2 2 2 2 3 3 0 3 1 3 2 3 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 13:04 |
|
|
start [/forum/topic.php?fid=20&msg=38744865&tid=1402484]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 207ms |
0 / 0 |