Consider the following function:
4 phương ánCó giải thích
void fun(int n)
{if (n < 0)
{System.out.println(“-“);
fun(-n);
}
else if(n<10)
System.out.println(n);
else
{fun(n/10);
System.out.println(n%10);
}
}Which call will result in the most recursive calls?
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: "fun(-1023);". Hàm có ba nhánh: n âm thì in dấu trừ rồi gọi lại với -n, n nhỏ hơn 10 thì in n và dừng, còn lại gọi fun(n/10) rồi in chữ số hàng đơn vị. Vậy số lời gọi đệ quy bằng số chữ số trừ một, cộng thêm một lần nữa nếu đối số âm. Với "fun(-1023);" chuỗi gọi là fun(-1023), fun(1023), fun(102), fun(10), fun(1), tức bốn lời gọi đệ quy, nhiều nhất trong các mức được nêu. Lời gọi "fun(1023);" cũng có bốn chữ số nhưng không cần bước đổi dấu nên chỉ ba lời gọi đệ quy. Lời gọi "fun(100);" có ba chữ số và dương, cho hai lời gọi là fun(10) rồi fun(1). Lời gọi "fun(0);" rơi ngay vào nhánh n nhỏ hơn 10, in 0 rồi kết thúc mà không gọi lại lần nào.
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