Giải thuật đệ quy tìm quy luật dãy số

Cho dãy A={4,3,-2,-6,-5,0,4,…} xây dựng định nghĩa đệ quy cho việ tính An(n>=0) xây dựng giải thuật đệ quy tính An tính A10?

Mong mọi người giúp mình với

Bài này dễ nhìn thấy quy luật này. A(n) = A(n-1) - A(n-2) - 1

UPD: Dãy này tuần hoàn xừ nó rồi :expressionless: đề nhạt thật…

2 Likes

Hoặc là làm thế này nếu cảm thấy cái quy luật của bạn @noname00 đưa ra là không dễ nhìn thấy :joy:
mảng Input = {4, 3, -2, -6, -5, 0}
nếu n < 6 thì return Input[n]
nếu không thì return A[n - 6]

1 Like

Đoạn code như thế này nhưng kết quả nó lại ra -1 bạn ơi :cold_sweat:

#include <iostream>
using namespace std;

int f(int n){
	
	if(n>0){
	
		return f(n-1) - f(n-2) - 1;	
	
	}
	else{
		return 4;
		
	}
}

int main(){

	cout<<f(1);
}

Đã từng nghĩ tới :smile: mà bài này lại phải làm bằng đệ quy bạn ah :stuck_out_tongue_closed_eyes:

Đã làm đệ quy bao giờ chưa mà viết được code này vậy :expressionless:
Mà cái mình đưa ra cũng là đệ quy nhé.

1 Like

Mình mới học code c mà bạn. sai ở đâu bạn chỉnh hộ mình vs :smile:

Bạn phải để ý chứ. Nếu cout f(1) thì nó tính bằng f(0) - f(-1) - 1 à
Thêm điều kiện kiểm tra vào.

1 Like

chuẩn rồi. ngắn gọn xúc tích :+1:

#include <iostream>
#include <math.h>
#include<conio.h>
using namespace std;

long f(int n)
{
	if(n==1)
		return 4;
	if(n>=0)
		return f(n-1)-f(n-2)-1;	
}

int main()
{
	int n;
	cout<<"\nNhap vao so n la:";cin>>n;
	cout<<"\nKet qua cua no la:"<<f(n);
}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?