Consider the following function:

4 phương ánCó giải thích
Đề bài
void printOut(int n)
 {if (n==0) return;
  System.out.print(n);
  printOut(n-1);
  System.out.println(n);
 }

What is the output when the statement printOut(3); 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: "321123". Hàm in n trước khi gọi printOut(n-1) rồi in n thêm một lần sau khi lời gọi ấy trở về, nên mỗi tầng góp hai lần in nằm ở hai phía của đệ quy. Lượt đi in 3, 2, 1 theo chiều giảm; tới printOut(0) thì lệnh return cắt ngay nên tầng ấy không in gì; lượt về in 1, 2, 3 theo chiều tăng. Dãy "123321" là ảnh ngược của kết quả đúng, nó ứng với việc đặt lệnh in thứ nhất sau lời gọi đệ quy và lệnh in thứ hai trước. Dãy "321321" lặp nửa giảm hai lần, như thể cả hai lệnh in đều nằm trước lời gọi. Dãy "123123" lặp nửa tăng hai lần, như thể cả hai lệnh in đều nằm sau lời gọi, lúc đó trên đường đi xuống không có gì được in.

Cùng phần 3

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