将C ++代码转换为F#(函数)

时间:2013-11-18 08:15:56

标签: f#

任何人都可以将此C ++代码转换为f#?

int power(int a,int b)
{
  if(b==1)
  {
     return a;
  } 
  else 
      return a*power(a,b-1);
}

2 个答案:

答案 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