Consider the following function:

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

What is the value of fun(3)?

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: "4". Hàm dừng khi n bằng 1 hoặc 2 với giá trị trả về 1, còn lại trả fun(n-1) cộng 3 lần fun(n-2), chú ý hệ số 3 chỉ nhân vào hạng tử fun(n-2). Với n bằng 3: fun(3) = fun(2) + 3 × fun(1) = 1 + 3 × 1 = 4; toàn bộ dấu vết chỉ gồm ba lời gọi fun(3), fun(2) và fun(1), hai lời gọi sau là trường hợp cơ sở nên không mở thêm nhánh nào. Vì vậy "3" sai vì nó chỉ lấy 3 × fun(1) và bỏ mất hạng tử fun(2) bằng 1; "5" sai vì nó ứng với việc coi trường hợp cơ sở trả về chính n, tức fun(2) bằng 2 cho 2 + 3 = 5, trong khi mã trả về 1 cho cả n bằng 1 và n bằng 2; "12" sai vì nó bằng 3 lần kết quả đúng, tức nhân hệ số 3 vào cả tổng thay vì chỉ vào fun(n-2); "11" sai vì nó không phải giá trị của fun ở bất kỳ đối số nào, dãy giá trị đầu là 1, 1, 4, 7.

Cùng phần 3

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