2015-11-15 87 views
5

這是我今天問在面試問題:修復bug在for循環

請看下面的代碼:

int n=20; 
for (int i =0; i<n; i--) 
    print("*"); 

你被允許改變一個且只有一個字符,以便循環正好運行20次。

我根本無法回答這個問題。 起初我以爲我設置爲40,但隨後意識到,40 ins't小於20

我的面試官說,有5個不同的答案對這個問題...

請幫我看看答案。

+0

請注意,此代碼將永久運行。該更改位於for語句的後迭代部分。 –

+0

這不是JavaScript或c# –

+1

這也是一個瘋狂愚蠢的面試問題 - 什麼回答這告訴你的面試官關於你?你不想在這樣的採訪過程中工作 –

回答

12

更改爲

int n=20; 
for (int i =0; i<n; n--) 
print("*"); 
+0

很好地完成了sherlock! –

9

的另一種可能是:

int n=20; 
for (int i =0; -i<n; i--) 
    print("*"); 
+0

它也很好,但是,它是關於*更改*,*不添加*字符。 ;) – nelek

+2

@nelek不,他正在改變一個空的字符;) –

+0

是啊...... :) ....你也是對的,也是:) – nelek

4

這一個做這項工作,以及:

int n=20; 
for (int i =0; i+n; i--) 
    print("*"); 

假設隱含蒙上整數布爾語言,即將非零整數視爲true和零作爲false。