Giúp sửa đoạn code khi input kiểu số nguyên mà output có kiểu số thực

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;
}
1 Like

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

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

1 Like

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

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

2 Likes

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.

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