Hi all

I have a recursive algorith that must run until it finds the result:

def p(n)

n * (3 * n - 1) / 2

end

def h(n)

n * (2 * n - 1)

end

def find_next_match(p, h)

result_p = p(p + 1)

result_h = h(h + 1)

if result_p == result_h # Resultat gefunden!

return result_p

else

result_p < result_h ? p += 1 : h += 1

```
puts "find next match for p=#{p} (#{result_p}) and h=#{h}
```

(#{result_h})"

find_next_match(p, h)

end

end

The task is to find the next pair of p and h that result in the same

number. The first pair is 165 and 143, so I run it with these arguments:

puts find_next_match(165, 143)

Sadly, after some seconds, Ruby throwns a SystemStackError:

SystemStackError: stack level too deep

method p in uebung-2-1.rb at line 2

method find_next_match in uebung-2-1.rb at line 10

method find_next_match in uebung-2-1.rb at line 18

at top level in uebung-2-1.rb at line 22

copy output

Program exited with code #1 after 8.29 seconds.

But I’d like to run it and run it and run it without this limitation. Is

there a workaround for this, so I can change the stack level maximum?

Thanks a lot for help

Josh