Office365新增了lambda函数,据说实现了图灵完备,可以进行函数式编程。现用这个函数尝试实现整数的质因数分解。基本思路如图所示。
1. 在excel中,点击“公式”,然后点击“名称管理器”
2. 在“名称管理器”中点击“新建”,在“新建名称”对话框中的“名称”一栏输入“fenjie”,在“引用位置”栏目中输入以下内容:
=LAMBDA(x,y,IF(x<y,"",IF(MOD(x,y)=0,"*" & y & fenjie(x/y,y), fenjie(x,y+1))))
3. 点击“确定”,然后点击“关闭”
4. 在excel任意单元格中输入“=fenjie(12345,2)”,其中12345是要分解的数,2为要尝试的质因数的初始值,回车,则在当前单元格中显示“*3*5*823”,表示12345的质因数是3、5、823。
如果显示为“#NAME?”请确认office版本为365以及是否输入有误。
有两个疑问不知道如何解决:1. 如何省略第二个参数?2. 当质因数中有较大的质数时显示错误,经分析可能与excel允许的最大递归或迭代次数有关,如何解决这个问题?
欢迎讨论[捂脸]