Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
DasIch hat geschrieben:Du verwendest Rekursion, keine gute Idee in Python da es im Gegensatz zu z.B. Scheme keine tail-call optimization gibt.
Die binäre Suche hat logarithmische Komplexität, bei der Verdoppelung des Intervalls wächst die Rekursionstiefe nur um eine Ebene. Man muss also schon sehr große Intervalle angeben, um das Rekursionslimit zu überschreiten.
Außerdem mag die Rekursion Bestandteil der Aufgabestellung sein, wenn es sich – wie ich vermute – um eine Hausaufgabe handelt.
Kann man überhaupt Zahlen in einem offenen Intervall raten?
Mit einer Rekursionsstiefe von 1000 (sys.getrecursionlimit()) kommt man auf maximal
1071508607186267320948425049060001810561404811705533607443750388370351051124936
1224931983788156958581275946729175531468251871452856923140435984577574698574803
9345677748242309854210746050623711418779541821530464749835819412673987675591655
43946077062914571196477686542167660429831652624386837205668069376L :)
Diese Zahl (2 ** sys.getrecursionlimit()) könnte also die obere Grenze sein und 0 bietet sich als untere Grenze an. Dann fängt man in der Mitte an und variiert um die halbe Differenz von m und der passenden Intervallgrenze. Dabei ist darauf zu achten, dass man sich um mindestens 1 bewegt.
Der jetzige Algorithmus endet nicht, weil er 20 nicht trifft. Seine Periode ist 14, 21, 11, 16, 24, 12, 18, 27.