蒜頭君喫桃子

蒜頭君買了一堆桃子不知道個數,第一天吃了一半的桃子,還不過癮,有多吃了一個。以後他每天喫剩下的桃子的一半還多一個,到 n

n 天只剩下一個桃子了。蒜頭君想知道一開始買了多少桃子


輸入格式

輸入一個整數 n(2 \le n \le 60)n(2n60),代表第 nn 天只剩了一個桃子。

輸出格式

輸出買的桃子的數量。

樣例輸入1

2

樣例輸出1

4

樣例輸入2

3

樣例輸出2

10
這題雖然很簡單,但是是我第一個寫出的遞歸程序,可高興了。嘻嘻。

import java.util.Scanner;
public class Main {

public static long f(int n, long sum){
if(n==1) return (long)sum;
return f(n-1,(long)(sum+1)*2);
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int n = input.nextInt();
long sum = 1;
System.out.println(f(n,(long)sum));
}


}

值得注意的點是sum應該用long型,因爲遞歸到後面比較大的時候,已經超過int型數據的範圍,測試的結果不對。第一次寫的時候,就是用int型,測試32的時候就沒有通過,輸出了最大的int型數據:2147483648 ,問了別人才知道,應該用long型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章