From 3ee1fb747929d03813f33d8dc0585aeee46c02a2 Mon Sep 17 00:00:00 2001 From: Artem-Darius Weber Date: Thu, 17 Apr 2025 13:31:45 +0300 Subject: [PATCH] (lab 5) feat: add Recursion Types demonstration --- lab 5/RecursionTypes/Program.fs | 34 ++++++++++++++++++++++ lab 5/RecursionTypes/RecursionTypes.fsproj | 12 ++++++++ 2 files changed, 46 insertions(+) create mode 100755 lab 5/RecursionTypes/Program.fs create mode 100755 lab 5/RecursionTypes/RecursionTypes.fsproj diff --git a/lab 5/RecursionTypes/Program.fs b/lab 5/RecursionTypes/Program.fs new file mode 100755 index 0000000..d3b8a3f --- /dev/null +++ b/lab 5/RecursionTypes/Program.fs @@ -0,0 +1,34 @@ +// For more information see https://aka.ms/fsharp-console-apps +printfn "Hello from F#" + +let rec sumDigitsUp n = + if n < 10 then n + else (n % 10) + sumDigitsUp (n / 10) + +let rec sumDigitsDown n = + let rec sumDigitsDown' n acc = + if n < 10 then acc + n + else sumDigitsDown' (n / 10) (acc + (n % 10)) + sumDigitsDown' n 0 + +let rec sumDigitsTail' n acc = + if n < 10 then acc + n + else sumDigitsTail' (n / 10) (acc + (n % 10)) + +let sumDigitsTail n = sumDigitsTail' n 0 + +[] +let main argv = + System.Console.WriteLine("Введите число:") + let number = System.Console.ReadLine() |> int + + let result1 = sumDigitsUp number + System.Console.WriteLine($"Сумма цифр (рекурсия вверх): {result1}") + + let result2 = sumDigitsDown number + System.Console.WriteLine($"Сумма цифр (рекурсия вниз): {result2}") + + let result3 = sumDigitsTail number + System.Console.WriteLine($"Сумма цифр (хвостовая рекурсия): {result3}") + + 0 diff --git a/lab 5/RecursionTypes/RecursionTypes.fsproj b/lab 5/RecursionTypes/RecursionTypes.fsproj new file mode 100755 index 0000000..299cf40 --- /dev/null +++ b/lab 5/RecursionTypes/RecursionTypes.fsproj @@ -0,0 +1,12 @@ + + + + Exe + net7.0 + + + + + + +