设数列的第项为,则根据定义有。由此易得,
用wat语言(wasm)可实现求和法计算如下:
(module
(func $fib (export "fib") (param $n i32) (result i32)
(local $tmp i32)
(local.set $tmp (i32.const 1))
(block $break
(br_if $break (i32.lt_s
(local.get $n)
(i32.const 2)))
(loop $loop
(local.set $tmp (i32.add
(call $fib (i32.add
(local.get $n)
(i32.const -2)))
(local.get $tmp)))
(br_if $loop (i32.gt_s
(local.tee $n (i32.add (local.get $n) (i32.const -1)))
(i32.const 1)))
)
)
local.get $tmp
)
)
直接用f(n)=f(n-1)+f(n-2)的逻辑,wat代码为:
(module
(func $fib (export "fib") (param $n i32) (result i32)
(local $tmp i32)
(local.set $tmp (i32.const 1))
(block $break
(br_if $break (i32.lt_s
(local.get $n)
(i32.const 2)))
(local.set $tmp (i32.add
(call $fib (i32.add
(local.get $n)
(i32.const -2)))
(call $fib (i32.add
(local.get $n)
(i32.const -1)))))
)
local.get $tmp
)
)