任何人都可以将此C ++代码转换为f#?
int power(int a,int b)
{
if(b==1)
{
return a;
}
else
return a*power(a,b-1);
}
答案 0 :(得分:4)
这应该这样做
let rec power x y =
match y with
| 1 -> x
| _ -> x * power x (y-1)
这是terser的长形式,可能是更惯用的等价物
let rec power x = function 1 -> x | y -> x * power x (y-1)
答案 1 :(得分:2)
C ++版本中最直接的翻译(虽然我更喜欢Aluan的匹配);
let rec power a b =
if b = 1 then a
else a * power a (b-1)
另一种 - 几乎是作弊 - 的选择是;
let power a b = a ** b