Consider the following function:
4 phương ánCó giải thích
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 ánLờ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
Consider the following function:
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ó lời giảiCâu hỏiConsider the following function:
void fun(int n)
{int m = n/2;
int k = n%2;
if (m > 0)
{fun(m);
}
System.out.print(k + " ");
}
What is the output when the statement fun(11); is run?Có lời giảiCâu hỏiConsider the following function:
int fun(int n)
{if (n < 0)
return(fun(-n));
else if(n<5)
return(2);
else
return(n*fun(n/2));
}
What is the value of fun(-3)?Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây