Consider the following function:

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

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: "1 3 5 7 9". Đọc theo thụt lề thì lệnh in nằm sau lời gọi fun(n-2), nên mỗi lời gọi phải đi hết chiều sâu rồi mới in lúc quay về. Chuỗi lời gọi là fun(9), fun(7), fun(5), fun(3), fun(1), fun(-1); lời gọi với -1 không thoả n > 0 nên trả về ngay mà không in gì. Khi các lời gọi lần lượt quay về, giá trị in ra theo chiều ngược của chuỗi, tức 1, rồi 3, 5, 7 và cuối cùng 9. "9 7 5 3 1" sai vì đó là kết quả nếu lệnh in đứng trước lời gọi đệ quy, kiểu in trước rồi mới đi xuống sâu. "9 7 5 3" sai vì vừa in theo chiều giảm, vừa bỏ mất 1 dù fun(1) vẫn thoả điều kiện n > 0. "7 5 3 1" sai vì nó thiếu 9: lời gọi ngoài cùng cũng in giá trị của nó, và vì in sau đệ quy nên 9 phải là số ra cuối cùng.

Cùng phần 3

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