01/10/2018, 08:22

Giúp mình sửa đoạn code này với

input là kiểu số nguyên mà output lại có kiểu thực thì phải làm sao??

#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int dem_xau(int n, int k)
{
	double a;
	a= pow(2, n);
	if (n < k) return a;
	     else if (n == k) return (a - 1);
		      else return (dem_xau(n - k, k) + dem_xau(n - 1, k));
	
}
int main()
{
	int n, k;
	cout << "dem so xau nhi phan do dai n(n>=1) khong chua k(k>=2) so 0 lien tiep"<< endl;
	cout << "n=";
	cin >> n;
	cout << endl;
	cout << "k=";
	cin >> k;
	dem_xau(n, k);
	getchar();
	return 0;
}
rogp10 viết 10:25 ngày 01/10/2018

Chỗ đó thay bằng a = 1 << n;

Mà thấy bạn nên dùng mem luôn chứ gọi đệ quy chi

amaterasu viết 10:28 ngày 01/10/2018

a=1<<n; ý nghĩa là sao vậy??

Quân viết 10:33 ngày 01/10/2018

1<<n bằng 1 * 2^n |20 chars

rogp10 viết 10:28 ngày 01/10/2018

Bi giờ chắc là h mổ xẻ bài của thớt.

Theo cách kéo dài xâu ta có thể lập ra một hệ thức truy hồi. Tuy nhiên với k bất kì cách này sẽ là O(2^k) mem (!) sau khi mình xem đc code thì cảm giác là ct này ko ổn lắm, nếu soi theo đúng định nghĩa.

Bài liên quan
0