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;
}
Bài liên quan
Chỗ đó thay bằng
a = 1 << n;
Mà thấy bạn nên dùng mem luôn chứ gọi đệ quy chi
a=1<<n; ý nghĩa là sao vậy??
1<<n bằng 1 * 2^n |20 chars
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.