Consider the following function:

5 phương ánCó giải thích
Đề bài
int fun(int n)
  {if (n < 0)
     return(fun(-n));
      else if(n<5)
       return(2);
        else
        return(n*fun(n/2));
  }

What is the value of fun(6)?

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "12". Với n = 6 thì 6 không âm nên bỏ nhánh fun(-n), lại không nhỏ hơn 5 nên bỏ nhánh trả về 2, hàm chạy nhánh cuối và trả về 6 nhân fun(6/2) = 6 nhân fun(3). Lời gọi fun(3) thoả 3 < 5 nên trả về 2 ngay, vậy kết quả là 6 nhân 2 = 12. "2" sai vì 2 chỉ là giá trị của nhánh dừng, nó là đáp số khi đối số nằm trong khoảng từ 0 đến 4. "4" sai vì 4 là 2 nhân 2, ứng với việc nhân hai lần giá trị nhánh dừng thay vì nhân chính n với fun(n/2). "5" sai vì 5 là ngưỡng trong điều kiện n < 5, không phải giá trị trả về của bất kỳ nhánh nào. "11" sai vì chuỗi lời gọi chỉ có một phép nhân duy nhất là 6 nhân 2, không bước nào sinh ra 11.

Cùng phần 3

Xuất hiện trong 1 bộ đề