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 - 1);
}
}What is the output when the statement fun(3) 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 ba dấu sao ở dòng đầu, rồi hai, rồi một, cuối cùng mới tới dòng chữ. Hàm in trước rồi mới gọi đệ quy: với n bằng 3, vòng for in ba dấu sao rồi xuống dòng, sau đó gọi fun(2) in hai dấu sao, rồi fun(1) in một dấu sao, rồi fun(0) rơi vào nhánh đầu và in dòng chữ rồi dừng. Vì vậy số dấu sao giảm dần và dòng chữ luôn nằm cuối. Dãy "That's all! *** ** *" đặt dòng chữ lên đầu, điều đó chỉ xảy ra nếu lệnh in dòng chữ đứng trước phần đệ quy, trong khi nó nằm ở nhánh n bằng 0 và chỉ chạy sau ba lần gọi. Dãy "That's all! * ** ***" vừa đưa dòng chữ lên đầu vừa cho số dấu sao tăng dần, sai cả hai chỗ. Dãy "* ** *** That's all!" đúng chỗ dòng chữ nhưng số dấu sao tăng dần, chiều này chỉ xảy ra nếu hàm gọi đệ quy trước rồi mới chạy vòng for.
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