Consider the following function:

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

What is the output when the statement fun(9); 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: "9 7 5 3 1". Thân hàm in giá trị n rồi mới gọi lại chính nó với n-2, nên mỗi lần in xảy ra trước khi lún sâu thêm một tầng: fun(9) in 9 rồi gọi fun(7), fun(7) in 7 rồi gọi fun(5), tiếp tục in 5, in 3, in 1, và tới fun(-1) thì điều kiện n lớn hơn 0 không còn đúng nên dừng mà không in gì. Vậy màn hình nhận đủ năm số lẻ giảm dần từ 9 tới 1. Dãy "1 3 5 7 9" là thứ tự ngược lại, nó ứng với việc đặt lệnh in sau lời gọi fun(n-2) để mỗi tầng chỉ in lúc quay về. Dãy "9 7 5 3" dừng sớm một bước, tức điều kiện là n lớn hơn 1 chứ không phải n lớn hơn 0, nên mất lần in 1. Dãy "7 5 3 1" thiếu số 9 ở đầu, như thể tầng đầu tiên chỉ gọi tiếp mà không in, trong khi fun(9) in ngay 9 trước đã.

Cùng phần 3

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