1. 程式人生 > 其它 >老闆發獎金--niuke

老闆發獎金--niuke

老闆一共需要給某個員工發獎金n元,可以選擇一次發1元,也可以選擇一次發2元,也可以選擇一次發3元。請問老闆給這位員工發放完n元獎金共有多少種不同的方法?

資料範圍:1 <= n <= 10


import java.util.Scanner;

public class GiveMoney {
    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);
        System.out.print ("輸入要發的獎金:");
        int number = scanner.nextInt ();
        System.out.println ("您有" + f (number) + "種方法發完" + number + "元獎金!!");
    }

    /**
     * 獲取 發獎金可用的總方法 的方法
     *
     * @param number 要發的錢數
     * @return 總方法數
     */
    public static int f(Integer number) {
        //設定遞迴出口
    	if(number==1) {
    		return 1;
    	}
    	//設定計數器,因為都會有全部還錢的情況
    	int count = 0;
    	/**
    	 * 	1:先發1塊的情況下,剩下4塊是不是就和發4塊的方法一樣了?
			2:先發2塊的情況下,剩下3塊是不是就和發3塊的方法一樣了?
			3:先發3塊的情況下,剩下2塊是不是就和發2塊的方法一樣了?
			4:先發4塊的情況下,剩下1塊是不是就和發1塊的方法一樣了?
			5:5塊一次性發完,唯一方法
    	 */
    	//f(5) = f(4)+f(f3)+(f2)+(f1)+1
    	for(int i = number - 1 ;i >0 ;i--) {
    		count = f(i) + count;
    	}
    	return count + 1;
    }
}