Consider the following function:

4 phương ánCó giải thích
Đề bài
int fun(int n)
   {if(n<=0) return(1);
      return(2*fun(n-2));
   }

What is the output when the statement:

Đề bài
System.out.println(fun(5));

is run?

Các phương án trả lời

Chọn một phương án
Lờ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

Xuất hiện trong 1 bộ đề