algorithm 階乘

階乘,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