Consider the following function:
4 phương ánCó giải thích
int fun(int n)
{if(n<=0) return(1);
return(2*fun(n-2));
}What is the output when the statement:
System.out.println(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: "8". Hàm trả 1 khi n không dương, còn lại trả 2 nhân kết quả của fun(n-2), nên giá trị cuối là 2 lũy thừa số lần đệ quy. Chuỗi lời gọi: fun(5) cần fun(3), fun(3) cần fun(1), fun(1) cần fun(-1); tới fun(-1) thì n không lớn hơn 0 nên trả 1 và dừng. Trả ngược lên: fun(1) = 2×1 = 2, fun(3) = 2×2 = 4, fun(5) = 2×4 = 8, đúng ba lần nhân với 2. "7" và "9" không phải lũy thừa của 2 nên không thể là kết quả của một chuỗi chỉ gồm các phép nhân với 2 bắt đầu từ 1. "10" là 2×5, tức lầm rằng hàm nhân với chính n; thân hàm chỉ nhân với hằng số 2, còn n chỉ đóng vai đếm số bước đệ quy.
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