ya_hossein's blog

By ya_hossein, history, 3 years ago, In English

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!

  • Vote: I like it
  • -6
  • Vote: I do not like it

| Write comment?
»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
3 years ago, # |
  Vote: I like it +3 Vote: I do not like it

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

»
3 years ago, # |
  Vote: I like it +10 Vote: I do not like it

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 years ago, # |
  Vote: I like it 0 Vote: I do not like it

it doesn't work after using bootstrap...

did i forget something?

here is link

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    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 years ago, # |
  Vote: I like it +4 Vote: I do not like it

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.