首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在满足某一条件之前,是否有添加到列表中的J成语?

在满足某一条件之前,是否有添加到列表中的J成语?
EN

Stack Overflow用户
提问于 2015-05-30 06:08:25
回答 2查看 181关注 0票数 5

假设你用明显的,蛮力的算法生成斐波那契数。如果我知道我想预先生成的斐波纳契的数量,我可以使用power ^:这样做。

代码语言:javascript
复制
(, [: +/ _2&{.)^:20 i.2

1e6说,当斐波纳契达到某种极限时,我怎么才能停下来呢?(我知道如何使用while.在函数中这样做,但这并不有趣。)

我想强调的是,这是一个关于J的一般性问题,而不是关于Fibonacci的具体问题。不要被斐波那契的数字分心。问题的核心是如何在满足某些条件之前将其附加到列表中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-30 16:08:44

我认为最好的答案是亨利·里奇的“C程序员J”一书。具体来说,它使用Power ^:。您也可以使用它来收敛,直到没有变化,这样就不需要定义限制了。Henry使用的例子是:

代码语言:javascript
复制
2 *^:(100&>@:])^:_"0 (1 3 5 7 9 11)
128 192 160 112 144 176

^:_ Power连接会重复,直到没有任何更改,并且^:(100&>@:])测试的结果小于100。如果是,则将^:应用于1,并再次执行循环2*,如果不少于100,则^:将应用于0,结果是它什么也不做,什么也不改变,循环就会退出。它使用"0作为秩,这意味着它可以将加倍函数2*分别应用于每个1 3 5 7 9 11

亨利确实比我更好地解释了这个过程,所以这里是进一步阅读的参考。Toc191734389

票数 4
EN

Stack Overflow用户

发布于 2015-05-30 16:06:45

Power也有u^:v^:n,其中第二个动词可以用作检查。双倍(+:)而(n_)小于100 (100&>):

代码语言:javascript
复制
+:^:(100&>)^:_ ] 1
128

+:^:(100&>)^:_ ] 3
192

和往常一样,为了附加权力的结果,你把名词框起来:

代码语言:javascript
复制
+:^:(100&>)^:(<_) ] 3 
3 6 12 24 48 96 192
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30542928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档