首页 > 解决方案 > 是否可以将幂函数实现为 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 表达式来计算整数的幂?它看起来怎样?

提前致谢。

标签: c#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);

推荐阅读