match を利用してフィボナッチ数列を作成する再帰関数を作成しようとしました。私は Euler2 を動作させましたが、Euler2a では、反復制約 j を除いて関数全体を自己完結型にしようとしています。
数列を提供するために Euler2a をどのように変更する必要がありますか?
どんなポインタでも大歓迎です。:)
Euler2 の結果
val Euler2 : list:int リスト -> i:int -> j:int -> int リスト
val z : int リスト = [1; 2; 3; 5; 8; 13; 21; 34; 55; 89]
Euler2a の結果
val Euler2a : j:int -> (int リスト -> int -> int -> int リスト)
val z2 : (int リスト -> int -> int -> int リスト)
Euler2
let rec Euler2 (list: int list) i j =
match i with
| 1 | 2 -> Euler2 list (i+1) j
| _ when (i<=j) -> let newList = list @ [list.[list.Length - 1] + list.[list.Length - 2]]
Euler2 newList (i+1) j
| _ -> list
let z = Euler2 [1;2] 1 10
Euler2
let rec Euler2a (j:int) =
let i = 1
let list = [1;2]
let rec Euler2b (list: int list) i j =
match i with
| 1 | 2 -> Euler2b list (i+1) j
| _ when (i<=j) -> let newList = list @ [list.[list.Length - 1] + list.[list.Length - 2]]
Euler2b newList (i+1) j
| _ -> list
Euler2b
let z2 = Euler2a 10