Wpis z mikrobloga

Mireczki zagadka z #programowanie #dotnet #fsharp moze troche #csharp

Czy ponizsza funkcja zawsze terminuje?

open System

let number = Random().Next()

let rec guess (lower, upper) =
printfn "%A" (lower, upper)
if number >= lower && number <= upper then
let x = (lower + upper) / 2
if number > x then
guess (x, upper)
elif number < x then
guess (lower, x)
else x
else infinity |> int

let x = guess(Int32.MinValue, Int32.MaxValue)
erwit - Mireczki zagadka z #programowanie #dotnet #fsharp moze troche #csharp

Czy ...

źródło: comment_TH21muoauxNaCxhEHH1lOo1PCQs0VmRW.jpg

Pobierz
  • 7
@erwit: nie znam F#, tylko C#, ale zakładam że może chodzić o linijkę

let x = (lower + upper) / 2
bo w tym działaniu można łatwo wyjść poza zakres liczb, jeżeli x to integer