Consider the following function:

4 phương ánCó giải thích
Đề bài
void fun(int n)
  {if (n < 0)
    {System.out.println(“-“);
     fun(-n);
    }
    else if(n<24)
      System.out.println(n);
        else
        {fun(n/24);
         System.out.println(n%15);
        }
  }

What values of n are directly handled by the stopping (base) case?

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: "n >= 0 && n<24". Hàm có ba nhánh nối nhau bằng if và else: nhánh n < 0 in dấu rồi gọi lại với -n nên là bước quy giản; nhánh n < 24 in n và kết thúc mà không gọi lại, đây mới là trường hợp cơ sở; nhánh cuối gọi fun(n/24) nên cũng quy giản. Vì nhánh thứ hai chỉ được xét sau khi điều kiện n < 0 đã sai, nó thực sự chạy với n không âm và nhỏ hơn 24, tức miền n >= 0 và n < 24. Phương án "n < 24" đọc điều kiện tách rời khỏi chuỗi if và else, bỏ qua việc mọi n âm đã bị nhánh trước bắt lấy và đẩy sang lời gọi đệ quy. Phương án "n < 0" chính là nhánh chứa lời gọi đệ quy nên không thể là điểm dừng. Phương án "n >= 24" là nhánh gọi fun(n/24) rồi in n%15, cũng đệ quy chứ không dừng.

Cùng phần 3

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