filemakerでフィボナッチ数列を実装してみた
前回:https://qiita.com/sikakui-hospital/items/0e9a2d13eef79f5623a0
バージョンは17pro advancedなのでwhile関数はありません。
項数はフィールドで入力されたものを使うのがいいんでしょうけど、今回は直接$n にいれてしまっています。
第1項を1、第2項を1としているので、
1,1,2,3,5,8,13,21,34,55…となります。
- カスタム関数を使った再帰関数
- letによる再帰式
順番にコードを紹介します。
1. カスタム関数を使った再帰関数
カスタム関数の設定
関数名:fib
関数の引数:num
fib(num) =
Case(
num = 1;
1;
num= 2;
1;
num>2;
fib(num-1) + fib(num-2)
)
計算式
fib(10)
結果
55
合致していますね。
2. letによる再帰式
計算式
Let(
[
$n = 5;
$f_1 = 1;
$f_2 = 1;
$saiki = "case(
$n = 1;
$f_1;
$n = 2;
$f_2;
$n > 2;
let(
[
$f_n = $f_2 + $f_1;
$f_1 = $f_2;
$f_2 = $f_n;
$n= $n -1
];
evaluate($saiki)
)
)"
];
Evaluate($saiki)
)
結果
55
合致していますね。
以上です。本当は1.の仕様でカスタム関数を使わず実装をしたかったのですが、引数を用いない方法がわからず断念しました。わかる人がいましたら教えてください。