Consider the following function:
4 phương ánCó giải thích
int fun(int a, int n)
{ if(n == 0) return(1);
int t =fun(a,n/2);
if(n%2==0)
return(t*t);
else
return(t*t*a);
}What is the value of fun(3, 2)?
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: "9". Hàm là luỹ thừa nhanh: nó tính t bằng fun(a, n/2) rồi trả t nhân t khi n chẵn, trả t nhân t nhân a khi n lẻ, tức dựng a mũ n từ a mũ n/2. Lần theo lời gọi fun(3, 2): n bằng 2 khác 0 nên gọi fun(3, 1); trong đó n bằng 1 khác 0 nên gọi fun(3, 0) trả về 1, rồi vì 1 là số lẻ nên trả 1 × 1 × 3 = 3; quay về mức ngoài với t bằng 3, n bằng 2 là số chẵn nên kết quả là 3 × 3 = 9, đúng bằng 3 mũ 2. Vì vậy "6" sai vì nó là 3 × 2, tức đọc hàm như một phép nhân hai tham số thay vì luỹ thừa; "8" sai vì nó là 2 mũ 3, tức đảo vai trò cơ số và số mũ; "5" sai vì trong toàn bộ dấu vết chỉ xuất hiện các giá trị 1, 3 và 9, không bước nào cho ra 5.
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