Maple计算机algeba系统有一个命令seq(f, i = m..n, step)
,它返回序列fm
,... fn
,其中fi
是表达式f
所有出现的符号i
都被i
到m
的整数序列中的n
的数值替换。实现方案函数(seq f (start step end))
,并生成值列表(f(start)
,f(start+step)
,...,f(start+n*step)
),其中n是最大整数,start+n*step <= end
1}}和start+(n+1)*step > end
。
我认为这样可行:(seq (lambda (x) (* x x)) '(0 2 7))
=&gt; (0 4 16 36)
答案 0 :(得分:2)
这方面的基本解决方案是实施iota
和map
,并将两者结合起来:
iota
生成给定开始,停止和步骤map
在给定列表的所有元素上调用给定函数,并返回包含返回值的新列表你必须编写这些函数,但是一旦你有了函数,你的seq
函数很简单就可以将两者拼凑在一起了。