Skip to content

Instantly share code, notes, and snippets.

@leemorgan
Last active February 22, 2024 21:37
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leemorgan/b26288e6909435c3193e to your computer and use it in GitHub Desktop.
Save leemorgan/b26288e6909435c3193e to your computer and use it in GitHub Desktop.
Fibonacci series in Swift
// Fibonacci series
// F[n] = F[n-1] + F[n-2]
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
// Find the fibonacci number for n interations
func fibonacci(n: Int) {
var num1 = 0
var num2 = 1
for _ in 0 ..< n {
let num = num1 + num2
num1 = num2
num2 = num
}
print("result = \(num2)")
}
fibonacci(7)
// Using Recursion
func fibonacciRecursiveNum1(num1: Int, num2: Int, steps: Int) {
if steps > 0 {
let newNum = num1 + num2
fibonacciRecursiveNum1(num2, num2: newNum, steps: steps-1)
}
else {
print("result = \(num2)")
}
}
fibonacciRecursiveNum1(0, num2: 1, steps: 7)
@Sajjon
Copy link

Sajjon commented Nov 2, 2023

This is being a bit clever:

/// Generates a series of `numberOfElements` many fibonacci element, using recursion.
func fibonnaci(numberOfElements n: UInt) -> [Int] {
	let list = [0, 1]
	guard n > 2 else {
		return Array(list.prefix(Int(n)))
	}
	
	func inner(_ l: [Int]) -> [Int] {
		let m = l.count
		guard n != m else { return l }
		return inner(l + [(l[m - 2] + l[m - 1])])
	}
	
	return inner(list)
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment