Consider the following function:

4 phương ánCó giải thích
Đề bài
void fun(int n)
    {if(n > 0)
      { n = n/5;
        fun(n);
        System.out.print("  " + n);
      }
    }

What is the output when the statement fun(23); is run?

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: "0 4". Trong thân hàm, n bị gán lại bằng n/5 trước khi gọi đệ quy, và lệnh in đứng sau lời gọi nên mỗi tầng chỉ in khi đã quay về, lại in giá trị n đã bị chia. fun(23) đổi n thành 4 rồi gọi fun(4); fun(4) đổi n thành 0 rồi gọi fun(0); fun(0) không vào thân vì điều kiện n lớn hơn 0 sai. Trên đường quay về, tầng của fun(4) in 0 rồi tầng của fun(23) in 4. Dãy "4 0" là thứ tự in khi đặt lệnh in trước lời gọi đệ quy, lúc đó 4 ra trước 0. Dãy "4 1" dùng 1 thay cho 0, nhưng 4 chia 5 trong phép chia nguyên bằng 0 chứ không phải 1. Dãy "1 4" sai cả giá trị lẫn thứ tự, nó giả định tầng sâu in 1 rồi tầng ngoài in 4, trong khi tầng sâu giữ n bằng 0.

Cùng phần 3

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