01/10/2018, 12:13

Ví dụ về hàm đệ quy

Ví dụ cho như sau :
A1=1
A(n)=n*(A1+A2+…+A(n-1)) (*)
Tính A(n) với n được nhập vào.

Và mình có đoạn code sau đây :

#include <iostream.h>
int tinhAn(int n);
int main()
{
	int n;
	cout<<"
Nhap vao n: ";
	cin>>n;
	cout<<"
Ket qua la: "<<tinhAn(n);
	cout<<endl;
	return 0;
}
int tinhAn(int n)
{
	if (n==1) return 1;
	return n*(1+tinhAn(n-1));
}

Mình phân vân tại chỗ này

int tinhAn(int n)
        {
        	if (n==1) return 1;
        	return n*(1+tinhAn(n-1)); 
        }

có đúng với cái (*) này hay không nữa ví nếu mình cho A(2) thì sẽ ra 4, A(3) thì sẽ ra 15
với
return n*(1+tinhAn(n-1));
còn với
return n*(0+tinhAn(n-1));
thì cho A(2) thì sẽ ra 2, A(3)=6

Mong được sự giúp đỡ của mọi người

HK boy viết 14:23 ngày 01/10/2018

Không.

Từ công thức ta có thể thấy A(n) phụ thuộc vào A(1), A(2),…, A(n-1) chứ không phải chỉ có A(n-1) như hàm tinhAn của bạn.

hao vi viết 14:26 ngày 01/10/2018

Vậy mình phải sửa như thế nào cho hợp lý ? Bạn có ý kiến gì không ?

HK boy viết 14:29 ngày 01/10/2018

Code đúng như định nghĩa.

A(n):
    if n == 1
        return 1

    sum = 0
    for i = 1 -> n-1:
        sum += A(i)

    return n * sum
hao vi viết 14:28 ngày 01/10/2018

À, thì ra đơn giản là vậy
Cảm ơn bạn nhiều nha

Bài liên quan
0