Files
hello-algo/ja/codes/swift/chapter_computational_complexity/recursion.swift
Yudong Jin d7b2277d2b Re-translate the Japanese version (#1871)
* Retranslate Japanese docs with GPT-5.4

* Retranslate Japanese code with GPT-5.4
2026-03-30 07:30:15 +08:00

80 lines
2.0 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* File: recursion.swift
* Created Time: 2023-09-02
* Author: nuomi1 (nuomi1@qq.com)
*/
/* */
func recur(n: Int) -> Int {
//
if n == 1 {
return 1
}
//
let res = recur(n: n - 1)
//
return n + res
}
/* */
func forLoopRecur(n: Int) -> Int {
// 使
var stack: [Int] = []
var res = 0
//
for i in (1 ... n).reversed() {
//
stack.append(i)
}
//
while !stack.isEmpty {
//
res += stack.removeLast()
}
// res = 1+2+3+...+n
return res
}
/* */
func tailRecur(n: Int, res: Int) -> Int {
//
if n == 0 {
return res
}
//
return tailRecur(n: n - 1, res: res + n)
}
/* */
func fib(n: Int) -> Int {
// f(1) = 0, f(2) = 1
if n == 1 || n == 2 {
return n - 1
}
// f(n) = f(n-1) + f(n-2)
let res = fib(n: n - 1) + fib(n: n - 2)
// f(n)
return res
}
@main
enum Recursion {
/* Driver Code */
static func main() {
let n = 5
var res = 0
res = recursion.recur(n: n)
print("\n再帰関数による総和結果 res = \(res)")
res = recursion.forLoopRecur(n: n)
print("\n反復で再帰をシミュレートした総和結果 res = \(res)")
res = recursion.tailRecur(n: n, res: 0)
print("\n末尾再帰関数による総和結果 res = \(res)")
res = recursion.fib(n: n)
print("\nフィボナッチ数列の第 \(n) 項は \(res)")
}
}