如何将Kdb+斐波那契函数中的固定阈值替换为外部参数?
改造Kdb+斐波那契函数实现阈值参数化
你只需要将原函数修改为接受两个参数(初始序列和阈值)的形式,在迭代的终止条件中引用外部传入的阈值参数即可:
q)fib:{[init;limit] {x,sum -2#x}/[{last[x] < limit};init]}
测试调用:
q)fib[1 1;100] 1 1 2 3 5 8 13 21 34 55 89 144
说明
- 原函数是单参数(仅初始序列),现在扩展为双参数
init(初始序列)和limit(阈值) - 将原硬编码的
100替换为参数limit,让终止条件变为动态可配置的 - 迭代逻辑
{x,sum -2#x}保持不变,依然负责生成下一个斐波那契数并追加到序列中
你也可以测试不同阈值的情况,比如:
q)fib[1 1;50] 1 1 2 3 5 8 13 21 34 55
内容的提问来源于stack exchange,提问作者Utsav
相关产品推荐
相关产品推荐

