Ich arbeite an Problem vier von Projekt Euler und stoße auf eine Stackoverflow-Ausnahme. Ich bitte nicht um Hilfe bei der Lösung des Problems, ich möchte nur, dass es erklärt wird warum Ich erhalte eine Stackoverflow-Ausnahme. Es ist in der Regel wegen der unendlichen Rekursion, aber ich glaube nicht, dass das diesmal der Fall ist (wenn ich nur blind bin und nicht sehen, es jetzt bitte lassen Sie mich wissen).
Hier ist der Code:
let Euler4 =
let reverse sum =
let rec loop (n,x) =
if n = 0
then
x
else
loop (n/10,(x*10) + (n%10))
loop (sum, 0);
let isPalindrome arg = (arg = (reverse arg));
let findPalindromes (startx,starty) =
let rec loop (x,y) acc =
let result = if isPalindrome (x * y) then ((x,y) :: acc) else acc;
let next = match (x,y) with
| (x,y) when y = 100 -> (x-1,starty)
| _ -> (x,y-1)
if x = 100 then
result
else
loop (next) result
loop (startx,starty) [];
let value = (999,999);
printfn "%A" (findPalindromes value);
;