Giúp bài tập có công thức truy hồi a(n) = 2*a(n-1)+a(n-2)

1.Dãy {an} được cho dưới dạng công thức truy hồi:
an = 2an-1 +an-2;
a0 =1; a1 = 2
Lập chương trình in ra màn hình n phần tử đầu của dãy theo.

  • Dùng mảng 1 chiều để lưu trữ các phần tử của dãy

Bài này bạn dùng hàm đệ quy.
Bạn có thể google search “Hàm tính fibonacci đệ quy” là hiểu

Đề bài bảo gì thì bạn làm nấy thôi.
Tạo mảng a[], a[0]=1, a[1]=2, a[n]=2*a[n-1]+a[n-2].

1 Like

Hàm đệ quy làm được rồi nhưng cô cho mình làm thêm nữa làm theo dùng mảng 1 chiều
đầy là code hàm đệ quy mình làm

#include "Header.h"
int dq(int n);
int dq (int n)
{ if (n==1 )
    return 1;
else if (n==2) return 2;
  else return (2*(dq(n-1))+ dq(n-2));
}
void main()
{   
    int n,i;
    cout<<"Tim so hang thu may cua day: ";cin>>n;
    cout<<"\n So hang thu "<<n<< " cua day la "<<dq(n);
    cout<<"\n Day "<<n<<"  so hang tu dau cua day  :";
for (i=1;i<=n;i++)
 cout<< dq(i)<< "\t";
 getch();
}

Chẳng khác gì thằng Fibo, dùng 3 biến để tính.

1 Like

thực chất cái hàm đệ qui cũng như là vòng lặp for thôi bạn

Câu này chỉ đúng với đệ quy tuyến tính.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?