c# - 是否可以将幂函数实现为 lambda 表达式?
问题描述
我有一点空闲时间,所以开始在 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 表达式来计算整数的幂?它看起来怎样?
提前致谢。
解决方案
(不考虑负能量,低效无望,千万不要这样做!)
迭代:
Func<int, int, int> pow = (x,y) =>
{
if (y == 0)
return 1;
int result = x;
for (int i = 1; i < y; i++)
{
result *= x;
}
return result;
};
递归:
Func<int, int, int> pow = null;
pow = (x,y) => (y == 0) ? 1 : x * pow(x, y - 1);
推荐阅读
- ruby-on-rails - 尝试使用 Ruby on Rails 检测 mime 类型
- python - 获取对象Django的关系模型名称
- r - 使用了连续 X 变量但仍然出现错误:StatBin 需要连续 x 变量
- vmware-clarity - VMWare Clarity - 主分支 - `npm run angular:dev:start` 失败并出现错误:找不到任务:“'core:build:ts”
- oauth-2.0 - 我应该在我的应用程序中使用哪种 OAuth 流程来集成 Google Drive?
- php - Laravel 获取所有类别的帖子数
- authentication - DocuSign API:信封身份验证查看 URL 的重定向问题
- css - CSS Media Query Level 4 Range Context Syntax——没有在 Chromium 中实现?
- php - 如何在 Order Meta 中获取产品名称
- google-sheets - 如何阻止 Google 表格在空白单元格中显示撇号?