劍指offer第二版 面試題64(java)

2021-09-24 08:31:55 字數 684 閱讀 5519

面試題:求1+2+……+n

題目:求1+2+……+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)

參考:

方法:

一、使用邏輯運算子結束遞迴

利用「或者「邏輯運算子,前面為真,就不用計算後邊的特點,使得n=0的時候就可以停止遞迴

利用」並且「邏輯運算子,前面為假,也不用計算後邊的特點,使用n>0來停止遞迴。

左右都必須是關係運算子的表示式,目的是讓後邊的執行。

二、利用異常結束遞迴

當出現異常情況時,跳出遞迴

(對邊界0、1可用,但對異常輸入如負數,不可用)

**:

public class q64 

// 用邏輯運算子結束遞迴

// 當n>0不成立時,&&不會再繼續後面的操作

public static int sum(int n)

// 用異常結束遞迴

// 當n為0時,停止

public static int sum1(int n) catch (exception e)

}}

劍指offer第二版 面試題6(java)

面試題6 從尾到頭列印鍊錶 題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 鍊錶的結點定義如下 public class listnode 注意 面試中,如果打算修改輸入的資料,最好先問好是否資料是允許修改的 思路 1.遍歷順序從頭到尾,列印順序從尾到頭,第乙個結點最開始被訪問,但是最...

劍指offer第二版 面試題8 java

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標 分析 情況 一 有右子樹,這時只需要把其右孩子作為下乙個遍歷的 並不是要找的 節點,然後沿著該節點的左子樹 如果有的話 出發,直到遇到葉子節點,那麼該葉子節...

劍指offer第二版 面試題9(java)

面試題9 用兩個棧實現佇列 題目描述 方法 兩個棧 stack1 stack2 插入時,直接放入stack1 刪除時,直接彈出pop2中的物件 如果pop2為空,則先將pop1中的物件放入stack2中,再從stack2裡pop第乙個 如 依次放入stack1中1 2 3,在彈出並放入stack2中...