Thử kiến thức Javascript của bạn

Continuing the discussion from CodeFights - Become a Code Champion:

Lên vọc thử thì thấy cái này, chắc là dễ với mấy bạn giỏi. Đạt thì bó tay rồi. Ai sửa dùm cái này lỗi chỗ nào vậy?

/**
 * @Input: a positive integer
 * @Output: sum of cubes of all integers
 * from 1 to and including @Input
 * @Example:
 * sumOfCubes(3) = 36
 */

function sumOfCubes(n) {
  var result = 1;
  for (var i=1; i <= n; i++){
  	result += i * i * i;
  }
  return result;
}
1 Like

result = 0;
1 + 1^3 + 2^3 + 3^3 = 37.

1 Like

E đoán thử, sửa var result = 1; thành var result = 0; hoặc sửa for (var i=1; i <= n; i++) thành for (var i=2; i <= n; i++)

1 Like

Không sửa được vòng for chạy từ i= 2 đâu bạn. Sửa result = 0 thôi

1 Like

uhm, cám ơn bạn, nếu mình đoán k lầm thì sửa for i=2 chỉ đúng với tham số truyền vào n>=2; Truyền vào 0 là sai.

1 Like

Uhm, cộng thêm ban đầu đề bài người ta đã yêu cầu chạy từ i =1 cho nên không được sửa. :smile:

1 Like

Có câu này rất hay nhé =))

/**
 * @input: a positive integer
 * @Output: true is @Input is a power of two
 * and false otherwise
 * @Example:
 * isPowerOfTwo(2) = true
 * isPowerOfTwo(3) = false
 */

function isPowerOfTwo(n) {

  while (n % 2 === 0) { 
    n >>= 1;
  }

  if (n === 0) {
    return true;
  }

  return false;
}
5 Likes

Anh @ltd giải thích em câu trên với. ^^

3 Likes

Bài này bạn đổi (Bỏ vô ide, debug thôi, chứ bt chưa chắc đã làm dc :smiley: )

     if (n == 1) {
        return true;
      }

Toán tử >> là toán tử dịch bit dùng để thay đổi giá trị của các số được biểu diễn dưới dạng nhị phân. (Chi tiết chắc bạn lên google, mình k biết giải thích sao cho dễ hiểu).Ví dụ số n=16 đc biểu diễn là : 10000 (2^4). Số mũ bắt đầu từ vị trí số thứ tự thứ “0,1,2,3,4” nhá
Vậy n>>1 (Dịch sang phải 1 số. Cứ ngĩ là xóa 1 số cuối đi) = 1000=2^3=8
Vậy n>>2 (Dịch sang phải 2 số) = 100=2^2=4
Vậy n>>3 (Dịch sang phải 3 số) = 10=2^2=2
Vậy n>>4 (Dịch sang phải 4 số) = 1=2^0=1

Vì vậy nếu n là cơ số mũ của 2, thì giá trị cuối cùng fai luôn là 1.(2^0=1). Kết quả này do e debug rồi suy ra, nên không đưa ra đc lời giải đáp thỏa đáng, a @ltd có gì vào bổ sung e với nhé.

2 Likes

Đúng rồi, không hiểu nghĩ gì mà lúc test cứ nghĩ 2^0 = 0. Thế là chẳng hiểu nó sai chỗ nào :)))

3 Likes

cái trang này hay nhưng hình như có mỗi javascipt à, java còn biết tí tí chứ cái này chịu

3 Likes

Thuật toán thì ngôn ngữ nào cũng như nhau mà. Chỉ có phần string thì cái này hơi khác :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?