另一道遞迴演算法題(2009年企業面試題)
一個整數,大於0,不用迴圈和本地變數,按照n,2n,4n,8n的順序遞增。當值大於5000時,把值按照指定順序輸出來。
例:n=1237
則輸出為:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
提示:寫程式時,先致謝按遞增方式的程式碼,寫好遞增的以後,在增加考慮遞減的'部分。
static void doubleNum(int x)
{
System.out.println(x);
if(x<=5000)< p="">
{
doubleNum(2*x);
}
public static void main(String[] args)
{
doubleNum(323);
}
}
執行結果為:323 646 1292 2584 5168
大家再看下面的例子,有何區別?
public class Num
{
static void doubleNum(int x)
{
System.out.println(x);
if(x<=5000)< p="">
{
doubleNum(2*x);
}
System.out.println(x);
}
public static void main(String[] args)
{
doubleNum(323);
}
}
執行結果:323 646 1292 2584 5168 5168 2584 1292 646323
大家看到了,結果和上個例子完全不一樣,結果又重新列印了一次,而且順序正好相反。
[另一道遞迴演算法題(2009年企業面試題)]相關文章:
1.一道面試題及其推廣過橋問題
2.國稅面試題及答案