【发布时间】:2019-08-19 20:59:51
【问题描述】:
我有一点空闲时间,所以开始在 C# 中摆弄一下 lambda 表达式,只是为了学习一些新东西。 所以我从一个简单的平方函数开始:
Func<int, int> square = x => x * x;
效果符合我的预期。接下来我尝试了这样的事情:
Func<int, int> cube = x => x * x * x;
Func<int, int> pow4 = x => square(x) * square(x);
这也像预期的那样工作。然后我很好奇,想做这样的事情:
Func<int, int, int> pow = (x,y) => ... // multiply x with itself, y-times ;
我知道,有像 y = 0 这样的情况需要关心,递归算法可以做到这一点或使用 Math.pow()。 所以我的问题是:是否可以仅使用 lambda 表达式来计算整数的幂?它看起来怎么样?
提前致谢。
【问题讨论】:
-
你允许什么,你不允许什么?它要么必须是递归的、迭代的,要么调用 Math.Pow。
-
lambda 表达式只是“语法糖”——没有什么能阻止你编写复杂的函数。但是为什么不使用真正的函数呢?
-
您允许
*(恰好有一个内置运算符),但不允许`Math.Pow(没有发生(目前)是一个内置运算符) -
那和 lambda 表达式没有任何关系?那只是“如何在不使用
Math.Pow的情况下实现 Math.Pow?” -
这可能对您来说也很有趣,因为您想知道 Math.Pow 是如何工作的:stackoverflow.com/a/8870593/9338645