Consider the following function:

4 phương ánCó giải thích
Đề bài
void printOut(int count)
  {if((count % 2) == 0)
     System.err.println("StdErr: Line " + count + "\n");
       else
        System.out.println("StdOut: Line " + count + "\n");
      if(count == 0) return;
      else
       printOut(count-1);
   }

What value for X the statement printOut(X); will print EXACTLY 5 lines to standard output (Lines start with "StdOut:"), in the fewest number of recursive calls?

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: "9". Hàm in sang luồng chuẩn khi count lẻ và sang luồng lỗi khi count chẵn, rồi gọi tiếp với count-1 cho tới khi count bằng 0, nên một lời gọi printOut(X) chạy qua đủ các giá trị X, X-1, cho tới 0. Số dòng mang nhãn StdOut chính là số giá trị lẻ trong đoạn đó: với X bằng 9 các giá trị lẻ là 9, 7, 5, 3, 1, đúng 5 dòng, và chuỗi chỉ tốn 9 lời gọi đệ quy. Con số "10" cũng cho 5 dòng vì 10 chẵn nên in sang luồng lỗi, nhưng nó tốn thêm một lời gọi nên không phải lựa chọn ít bước nhất như câu hỏi đòi. Con số "8" chỉ có các giá trị lẻ 7, 5, 3, 1, tức 4 dòng, thiếu một dòng. Con số "11" cho các giá trị lẻ 11, 9, 7, 5, 3, 1, tức 6 dòng, nhiều hơn yêu cầu.

Cùng phần 3

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