From 90f68a083f439e39e503370617e5df4320f8b529 Mon Sep 17 00:00:00 2001 From: "Ivan I. Ovchinnikov" Date: Fri, 10 Feb 2023 09:39:56 +0300 Subject: [PATCH] wip fib2 --- src/fib.erl | 7 ++++++- test/fib_test.erl | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/fib.erl b/src/fib.erl index 898841d..20e8176 100644 --- a/src/fib.erl +++ b/src/fib.erl @@ -4,4 +4,9 @@ % Сопоставление с образцом fib_p(0) -> 0; fib_p(1) -> 1; -fib_p(N) -> fib_p(N - 1) + fib_p(N - 2). \ No newline at end of file +fib_p(N) -> fib_p(N - 1) + fib_p(N - 2). + +% Сторожевая последовательность +fib_g(N) when N < 1 -> 0; +fib_g(N) when N < 2 -> 1; +fib_g(N) -> fib_g(N-1) + fib_g(N-2). diff --git a/test/fib_test.erl b/test/fib_test.erl index ef6760f..7fbcdc2 100644 --- a/test/fib_test.erl +++ b/test/fib_test.erl @@ -10,7 +10,8 @@ -include_lib("eunit/include/eunit.hrl"). fib_test_() -> [ - {"Test fib_p", fun test_fib_p/0 } + {"Test fib_p", fun test_fib_p/0 }, + {"Test fib_g", fun test_fib_g/0 } ]. test_fib_p() -> @@ -25,3 +26,16 @@ test_fib_p() -> ?assertEqual(21, fib:fib_p(8)), ?assertEqual(34, fib:fib_p(9)), ?assertEqual(55, fib:fib_p(10)). + +test_fib_g() -> + ?assertEqual(0, fib:fib_g(0)), + ?assertEqual(1, fib:fib_g(1)), + ?assertEqual(1, fib:fib_g(2)), + ?assertEqual(2, fib:fib_g(3)), + ?assertEqual(3, fib:fib_g(4)), + ?assertEqual(5, fib:fib_g(5)), + ?assertEqual(8, fib:fib_g(6)), + ?assertEqual(13, fib:fib_g(7)), + ?assertEqual(21, fib:fib_g(8)), + ?assertEqual(34, fib:fib_g(9)), + ?assertEqual(55, fib:fib_g(10)).