編程題階乘迷局

大廠筆試面試題,給定一個整數,求該整數的階乘,例如輸入5,結果是5*4*3*2*1=120。

拿到題目心中狂喜,迅速三下五除二就寫出來:

public  int fun1(int i) {
        int k = 1;
        for(int j=2; j<=i; j++) {
            k = k * j;
        }
        return  k;
}

面試後等offer,一週後來的不是offer而是一封情感滿滿的感謝信,意思大概是感謝你來面試,你給我們留下了深刻的印象,但你的某些方面和我們的要求還有很大的差距,巴拉巴拉……

說了一大堆廢話,還不如一句話言簡意賅:對不起,您面試未通過。許多求職者面試過程中僅僅是抱着完成任務的態度去做,沒有思考面試官出這道題究竟是要考察求職者哪方面的能力。我們先回過頭再看看之前寫的代碼,定義了好幾個變量才完成這件事,有沒有更好的辦法能高效的得到結果。看看題目,是不是可以用遞歸求解。

public int fun1(int i) {
        if(1==i){
            return 1;
        }

        return i*fun1(i-1);
    }

 這一版代碼清爽多了,是否能拿到offer不好說,因爲面試官千人千面,沒有統一的標準,我們做好自己就行了。

 

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