Блог пользователя ya_hossein

Автор ya_hossein, история, 3 года назад, По-английски

in the name of god

i'm new to python and i write recursion function in it for solving this problem and i get runtime error on test 5.

why recursion function in python gets runtime error?

its ok in c++.

thanks for your helping!

  • Проголосовать: нравится
  • -6
  • Проголосовать: не нравится

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by ya_hossein (previous revision, new revision, compare).

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by ya_hossein (previous revision, new revision, compare).

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by ya_hossein (previous revision, new revision, compare).

»
3 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

The default limit on recursive calls in Python is 1000 or 10000. You can increase it by calling sys.setrecursionlimit(...).

»
3 года назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Further to the comments about recursion limits, you may also find that even changing the max depth does not solve your problem. I certainly had that experience.

I found a solution in this thread and specifically this comment — it turns your recursion function into a non-recursive stack implementation.

Note that all recursions can be achieved using stacks instead, and (using DFS as an example), it is possible to code a DFS recursion using stacks instead, thus eliminating any concerns.

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

it doesn't work after using bootstrap...

did i forget something?

here is link

  • »
    »
    3 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    When you call the function from within itself, you must precede the call with "yield", so the correct version looks like this:

    arr1[x] = num1[x] + max((yield(ans0(x + 1))), (yield(ans0(x + 2))))

    and the same for your other function

»
3 года назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

The solutions are not equivalent.

When they are, the next thing is to learn to increase stack size in Python. You can refer here for an example.