【发布时间】:2016-03-13 06:08:43
【问题描述】:
(这可能是一个奇怪的问题,所以请不要告诉我“你为什么要这样做?”。)
我想知道是否有方法、技巧或工具,或者......使用另一个函数编写函数(具体语言并不重要)。例如,假设给定一个函数“power”,定义如下:
int power (int n) { return n == 0 ? 1 : 2 * power (n - 1); }
并假设您被要求编写,使用该函数或(甚至更好)通过转换该函数,另一个计算例如卢卡斯数(2、1、3、4、7、11、18、29 , 47, 76, 123, 199, 322, 521, ...)。当然,使用给定函数的简单方法是:
int lucas (int n) { ... + power (n) - power (n) + ... }
但这不是我正在寻找的答案。同样,转换函数的简单方法是删除它的主体并改写另一个,但这显然不是我想要做的。
【问题讨论】:
-
有一个用于计算需要指数的卢卡斯数的封闭式公式:
pow (0.5 + 0.5 * sqrt(5.0), n) + pow(0.5 - 0.5 * sqrt(5.0), n)。你指的是这个吗? -
是和不是。是的,因为它是给定示例的答案(用 pow 计算卢卡斯数),但不是,因为我在问是否有更普遍的方法可以做到这一点(如果你被赋予了另一个函数而不是“power”作为基础和另一个函数比“lucas”来写)。
-
在这种情况下,您的问题尚不清楚(因此,我将投票结束)。一般来说,在很多情况下,一个数学函数可以用另一个数学函数来表示,例如
tan(x) = sin(x) / cos(x)。这些是数学恒等式,与编程问题(本网站的内容)的联系尚不清楚。对于数学恒等式,您可能想查询Mathematics Stackexchange -
我同意你的观点,这个问题可能更适合数学 Stackexchange。与编程的联系(至少在我看来)是数字序列可以(而且经常是?)由函数定义(在编程意义上)。