階乘,factorial,遞迴,recursive
階乘定義
wiki:
在數學中,正整數的階乘(英語:factorial)是所有小於及等於該數的正整數的積,計為n!,例如5的階乘計為5!,其值為120:
5! = 5*4*3*2*1 =120
- 階乘迴圈算法
public static int fractorial(int n) {
int result=1;
for(int i =1;i<=n;i++) {
result *=i;
}
return result;
}
- Stream算法
public static int fractorialStream(int n) {
return IntStream.rangeClosed(1, n).reduce(1, (int a ,int b)->a*b);
}
- 遞迴算法
public static int fractorialRecursive(int n) {
return n==1 || n==0 ? 1 : n*fractorialRecursive(n-1);
}
- 尾遞迴tail recursive
public static int fractorialTailRecursive(int n) {
return fractorialHelper(1 ,n);
}
public static int fractorialHelper(int acc,int n) {
return n==1 ? acc : fractorialHelper(acc*n,n-1);
}
Reference:
- wiki
- java 8 in action