[102.2 MID] 3. 遞迴求解

3.(100%)遞迴求解
 以遞迴寫出如下3方法
 (a) 求數字為幾位數方法
       public static int digitsNo(long n)
       接收正整數n,回傳n為幾位數.
     提示: digitsNo(n) = digitsNo(n/10) + 1 for n > 0
           digitsNo(n) = 0 for n=0

 (b) 求某數反轉值
       public static long reverse(long n)
       接收正整數n,計算n數字反轉值.
     提示: reverse(n) = n for n<10
           reverse(n) = n除以10的餘數 x 10^digitsNo(n除以10的商)
                        + reverse(n除以10的商) for otherwise
           其中,^表示次方,可利用Math.pow(10,y)計算10的y次方
           回傳型別可利用(long)指令轉型為長整數.

 (c) 求C(n,m)組合值
       public static int combination(int n, int m)
       接收正整數n,m,回傳C(n,m).
     提示: C(n,m) = 1 for n=m or m=0
           C(n,m) = n for m=1
           C(n,m) = C(n-1,m) + C(n-1,m-1) for otherwise

(Sample Output)
digitsNo(67890) = 5
digitsNo(6789) = 4
digitsNo(678) = 3
digitsNo(67) = 2
digitsNo(6) = 1
reverse(50321) = 12305
reverse(5032) = 2305
reverse(503) = 305
reverse(50) = 5
reverse(5) = 5
combination(5,5) = 1
combination(5,4) = 5
combination(5,3) = 10
combination(5,2) = 10
combination(5,1) = 5
combination(5,0) = 1