Consider the following function:

4 phương ánCó giải thích
Đề bài
void fun(int n)
   {if(n<=0)
     return;
      else if (n<7)
        {System.out.print("  " + n);
         fun(n-2);
        }
        else
         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: "5 3 1". Đọc theo đúng thụt lề: n không lớn hơn 0 thì trả về ngay; n nhỏ hơn 7 thì in n rồi gọi fun(n-2); còn n từ 7 trở lên thì chỉ gọi fun(n-2) mà không in gì. Vậy fun(9) không in và gọi fun(7); fun(7) cũng không in vì 7 không nhỏ hơn 7, gọi fun(5); fun(5) in 5 rồi fun(3) in 3, rồi fun(1) in 1, rồi fun(-1) gặp n không lớn hơn 0 nên trả về. "1 3 5" là thứ tự ngược, chỉ xảy ra nếu lệnh in đặt sau lời gọi đệ quy. "7 5 3 1" in cả 7, nhưng điều kiện in là n nhỏ hơn 7 nên tại đúng 7 nhánh else được chọn và không in. "7 5 3" vừa in thêm 7 lại vừa bỏ mất 1, trong khi 1 vẫn nhỏ hơn 7 nên vẫn được in trước khi đệ quy xuống -1.

Cùng phần 3

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