Swift中如何用函数式方法生成指定长度的等比数列数组
嘿,这个需求用函数式编程来实现其实挺直观的!不同编程语言里都有对应的函数组合方式来搞定,我给你举几个常用语言的实现例子:
JavaScript 实现
你可以用Array.from()搭配箭头函数来完成,这是很典型的函数式写法,全程没有可变状态,纯靠映射生成结果:
const generateGeometricSequence = (a, n) => Array.from({ length: n }, (_, index) => Math.pow(a, index + 1)); // 测试示例:当a=2,n=4时 console.log(generateGeometricSequence(2, 4)); // 输出 [2, 4, 8, 16]
这里的逻辑是:Array.from()根据指定的长度n创建空数组框架,第二个参数作为映射函数,利用index(从0开始)计算出1到n的幂次,再通过Math.pow()得到对应项的值。
Python 实现
Python里有两种常见的函数式写法,一种是用map()结合range(),另一种是更简洁的列表推导式(列表推导式也属于函数式编程的声明式风格):
# 用map()的写法 def generate_geometric_sequence(a, n): return list(map(lambda x: a ** x, range(1, n + 1))) # 或者用列表推导式(更易读) def generate_geometric_sequence(a, n): return [a ** x for x in range(1, n + 1)] # 测试示例:当a=3,n=3时 print(generate_geometric_sequence(3, 3)) # 输出 [3, 9, 27]
range(1, n+1)生成了从1到n的整数序列,然后通过映射操作把每个整数x转换成a的x次方,最后转成列表得到目标数组。
不管哪种语言,函数式实现的核心都是用纯函数做映射转换,避免手动循环和修改可变变量,这样代码更简洁也更符合函数式编程的理念。
内容的提问来源于stack exchange,提问作者user3239711
相关产品推荐
相关产品推荐

