js的簡單的邏輯算法題


比如題目:尋找1~1000之內,所有能被5整除、或者能被6整除的數字

 

for(var i = 1 ; i <= 1000 ; i++){

2  if(i % 5 == 0 || i % 6 == 0){

3  console.log(i);

4  }

}

上面這個算法,我們有一個術語“窮舉法”

窮:  完整。欲窮千里目,更上一層樓。窮盡。

舉:  列舉,推舉。

窮舉法:就是一個一個試。我們現在要尋找1~1000之內,所有能被5整除、或者能被6整除的數字。

我們的思路,就是將1、2、3、4、……998、999、1000依次去試驗。看看這個數字,能不能被5或者6整除。

這時候你說,老師,那計算機太辛苦了。你看,13這個數字,為什么還要試呢?打眼一看就不能被5、6整除。

計算機就是一個奴隸。它沒有思維,它就是一個不吃飯,有着極強計算力的東西。

 

二、幾道算法練習

2.1 題目1:報7游戲的安全數

大家從小到大,都玩兒過的一個庸俗的游戲:

 

游戲玩兒法就是,大家輪流報數,如果報到能被7整除的數字,或者尾數是7的數字,都算踩地雷了。就應該罰唱歌。

 

請在控制台輸出1~60之間的所有“安全數”。

 

比如:

1、2、3、4、5、6、8、9、10、11、12、13、15、16、18、19、20、22、23、24、25、26、29、30……

 

答案見案例

 

2.2 題目2:水仙花數

水仙花數是一種特殊的三位數,它的特點就是,每個數位的立方和,等於它本身。

 

比如153就是水仙花數。因為:

13+53+33 = 153

 

100~999之內,只有4個水仙花數,請找出來。

 

特別經典的算法,是每個學習編程的人,都要會做。

 

答案見案例,我們只列出數值答案: 153、370、371、407

 

 


2.3 題目3:求1~100的和

求和的題目,涉及到了新的一種算法思想,叫做“累加器”。

1+2+3+4+5+6……

 

正確的:

1  var sum = 0; //累加器

2  //遍歷1~100,將所有的數字扔到累加器里面

3  for(var i = 1 ; i <= 100 ; i++){

4  sum = sum + i;

5  }

6  console.log(sum);

 

初學者常見的錯誤:

錯誤1:不聲明sum,不行的,因為所有的變量都要聲明:

1  //遍歷1~100,將所有的數字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

3  sum = sum + i;

4  }

5  console.log(sum);

 

錯誤2: sum不能在for里直接聲明:

1  //遍歷1~100,將所有的數字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

var sum = sum + i;

4  }

1  console.log(sum);

 

錯誤3: 每次for循環都要var一次,是不正確的:

1  //遍歷1~100,將所有的數字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

var sum = 0;//累加器

4  sum = sum + i;

5  }

6  console.log(sum);

 

 


2.4 求階乘

所謂的階乘,比如6的階乘,就是1*2*3*4*5*6 = 720。

現在,計算13的階乘。

 

1 var result = 1; //累乘器

3 for(var i = 1 ; i <= 13 ; i++){

4  result = result * i;

5 }

6 console.log(result);

 

 

2.5 用戶輸入一個數,輸出因數的個數

昨天晚上的作業3,就是用戶輸入一個數,輸出所偶遇能夠整除它的數字。

比如,

用戶輸入48,此時輸出1、2、3、4、6、8、12、16、24、48 。  共10個數字。

用戶輸入21,此時輸出1、3、7、21.共4個數字。

 

今天的這道題目,和昨天的這個題目非常像,不過不輸出完成序列,只輸出個數。

 

也就是說,用戶輸入48,彈出10

用戶輸入21,彈出4

用戶輸入11,彈出2

 

提示:此題用到累加器。

 

2.6 判斷質數

質數:就是只能被1和自己整除。

翻譯過來:它的因數個數是2。

比如:2、3、5、7、11、13、17、19、23、29、31、37……

 

用戶輸入一個數字,彈出這個數字是否是質數。

提示,用2.5的思路。

 

答案見案例。


三、函數

3.1 初步認識函數

1  <script type="text/javascript">

2  console.log("你好");

sayHello(); //調用函數

5  //定義函數:

6  function sayHello(){

7  console.log("歡迎");

8  console.log("welcome");

9  }

10  </script>

11 </body>

 

 

函數,是一種封裝。就是將一些語句,封裝到函數里面。通過調用的形式,執行這些語句。

函數的使用,是兩個步驟,第一步,函數的定義

語法:

1 function 函數名字(){

3 }

function就是英語“函數”、“功能”的意思。顧名思義,將一些功能封裝到函數里面。

function是一個關鍵字,和var、typeof一樣,都是關鍵字,后面要加空格。

函數名字的命名規定,和變量的命名規定一樣。只能是字母、數字、下划線、美元符號,不能以數字開頭。

后面有一對兒空的小括號,里面是放參數用的,下午介紹。大括號里面,是這個函數的語句。

常見錯誤:

不能小括號包裹大括號:

1 function sayHello({

3 })

不能忘了小括號對兒:

1 function sayHello{

3 }

 


第二步,函數的調用。

函數如果不調用,等於白寫。

調用一個函數,太簡單了,就是這個函數的名字后面加小括號對兒。

語法:

1 函數名字();

 

定義函數,可以在調用的后面:這是JS的語法特性,函數聲明頭的提升。知道就行了。

1  console.log("你好");

2  sayHello(); //調用函數

4  //定義函數:

5  function sayHello(){

6  console.log("歡迎");

7  console.log("welcome");

8  }

 

函數的功能、好處:

1) 將會被大量重復的語句寫在函數里面,這樣以后需要這些語句的時候,直接調用函數,不用重寫那些語句。

2) 簡化編程,讓編程變的模塊化。

 

 

 

 

 

3.2 函數的參數

 

實際參數和形式參數的個數,要相同。

 

1  qiuhe(3,4);

2  qiuhe("3",4);

3  qiuhe("我愛你","中國");

5  function qiuhe(a,b){

6  console.log(a + b);

7  }

 

 

3.3 函數的返回值

1  <script type="text/javascript">

2  console.log(qiuhe(3,4));

4  function qiuhe(a,b){

return a + b;

6  }

7  </script>

return就是英語“返回”的意思,那么就表示此時這個“函數調用的表達式”(紅色部分),值就是這個a+b。

 

● 函數里面可以沒有return,如果有,只能有一個。不能有多個return;

● 函數里面,return后面不允許書寫程序了,也就是說寫在后面的程序無效;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM