Skip to content

Commit

Permalink
Includes recursive factorial challenge
Browse files Browse the repository at this point in the history
  • Loading branch information
Caul58 committed Mar 29, 2024
1 parent 797cee5 commit 2298572
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*:
 
[< Previous](@previous)           [Home](Introduction)           [Next >](@next)
# Challenge 13: Recursive factorial
Write a function which calculates and returns factorial of a given number in a recursive way.
*/
import Foundation

func recursiveFactorial(number: Int) -> Int? {
(number <= 0) ? nil : (number <= 1) ? 1 : number * (recursiveFactorial(number: number - 1)!)
}

func unwrapRecursiveFactorial(number: Int) -> String {
guard let result = recursiveFactorial(number: number) else {
return "No tiene factorial"
}
return String(result)
}


print("""
Test 1, factorial de 0:
\(unwrapRecursiveFactorial(number: 0))
""")

print("""
Test 2, factorial de 7:
\(unwrapRecursiveFactorial(number: 7))
""")

print("""
Test 3, factorial de 10:
\(unwrapRecursiveFactorial(number: 10))
""")

print("""
Test 4, factorial de 1:
\(unwrapRecursiveFactorial(number: 1))
""")

print("""
Test 5, factorial de -1:
\(unwrapRecursiveFactorial(number: -1))
""")

print("""
Test 6, factorial de 4:
\(unwrapRecursiveFactorial(number: 4))
""")

//: [Next](@next)
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
* [Challenge #10: Balanced Expressions](Challenge#10)
* [Challenge #11: Disjoint Sets](Challenge#11)
* [Challenge #12: Is it a palindrome?](Challenge#12)
* [Challenge #13: Recursive factorial](Challenge#13)
* [...]
* [Challenge #43: Special by Halloween](Challenge#43)
* [Challenge #44: Boomerang](Challenge#44)
Expand Down
1 change: 1 addition & 0 deletions Challenges2022.playground/contents.xcplayground
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<page name='Challenge#10'/>
<page name='Challenge#11'/>
<page name='Challenge#12'/>
<page name='Challenge#13'/>
<page name='Challenge#43'/>
<page name='Challenge#44'/>
<page name='Challenge#45'/>
Expand Down

0 comments on commit 2298572

Please sign in to comment.