【发布时间】:2012-01-17 17:46:28
【问题描述】:
我有一个计算数组中数字乘积的函数。该功能应该像这样工作
function prod (array){
//compute and return product
}
var arr = [1,2,3,0,4,5,0,6,7,8,0,9];
the function call:
prod(arr); //should return 6
prod(arr); //should return 20
prod(arr); //should return 336 (6*7*8)
prod(arr); //should return 9
prod(arr); //should return 0
prod(arr); //should return 0
prod(arr); //should return 0
在方案中,这是通过延续来完成的,通过存储函数的先前状态(函数的状态在其退出点之前被捕获)see this
所以,简而言之,我希望 javascript 函数在不同时间返回不同的值,每次都传递相同的参数。
JavaScript 是一种设计良好的语言,所以我希望一定有一些东西可以模仿它。如果碰巧在 JS 中没有什么可以做的,我不介意以失败告终并继续前进。所以,随意说这是不可能的。
谢谢。
【问题讨论】:
-
你不能有一个静态变量 keepmtrack 你的状态吗?
-
这些数字的乘积永远为零,直到你把所有的零都去掉。
-
不清楚 - 这些值是如何返回的?
-
它返回所有数字的乘积直到下一个零,然后下一个调用从下一个零开始。