Consider the following function:
4 phương ánCó giải thích
void fun(int n)
{if (n <= 0)
System.out.println("That's all!");
else
{for(int i = 1; i <= n; i++)
System.out.print("*");
System.out.println( );
fun(n - 2);
}
}What is the output when the statement fun(5); 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: "***** *** * That's all!", tức năm dấu sao ở dòng đầu, rồi ba, rồi một, cuối cùng mới tới dòng chữ. Đọc theo đúng thụt lề: khi n còn dương, hàm chạy vòng for in ra n dấu sao rồi xuống dòng, sau đó mới gọi fun(n-2); nghĩa là in trước, đệ quy sau. Vậy fun(5) in năm dấu sao, fun(3) in ba, fun(1) in một, rồi fun(-1) rơi vào nhánh n nhỏ hơn hoặc bằng 0 và in dòng chữ đúng một lần ở cuối. Dãy "That's all! ***** *** *" đặt dòng chữ lên đầu, thứ tự đó chỉ xảy ra khi lời gọi đệ quy đứng trước vòng for. Dãy "**** ** * That's all!" ứng với fun(4): trừ dần 2 từ 4 thì sau hai dòng đã về 0 nên không thể có dòng một dấu sao. Dãy "* *** ***** That's all!" đi theo chiều tăng, chiều này chỉ xuất hiện nếu vòng for được đặt sau lời gọi fun(n-2) để in lúc các lời gọi lần lượt quay về.
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