Đệ quy đuôi đếm số lượng chữ số lẻ của số nguyên n

đếm số lượng số lẻ của số nguyên n . em viết mãi , tìm không ra cái công thức đệ quy đuôi
VD: 12345
số lượng số lẽ là 3

//so luong chu so le trong so nguyen duong n
#include<iostream>
#include<math.h>
using namespace std;
int tong(int n);
int main()
{
	int n;
	cout << "Nhap gia tri N = ";
	cin >> n;
	cout << "So luong chu so le " << tong(n);
	return 0;
}
int tinh_tong(int n, int dem)
{

	if (n > 0)
	{
		int tinh = n % 10;
		return tinh_tong(tinh%2==1,dem+=1);
		n /= 10;
	}
	return dem;
}
int tong(int n)
{
	return tinh_tong(n, 0);
}

Vậy bài của em làm đâu? sao không post lên để mọi người sửa?

5 Likes

sửa giúp em với anh ơi

Truyền vào hàm cái gì thế?
Khi bạn sửa lại tham số đúng thì sẽ gặp vấn đề tiếp theo là lặp vô tận.

1 Like

– không biết có phải bạn post nhầm code hay không?
bạn định nghĩa hàm tinh_tong(), mà trong hàm main bạn lại gọi hàm tong(n).

ý tưởng của mình: ví dụ có số nguyên n là abcdef

  • nếu f là số lẽ thì demsole(n) = 1 + demsole(n / 10).
  • nếu f là số chẵn thì demsole(n) = demsole(n / 10).
  • điều kiện dừng của đệ quy (khi n = 0): demsole(0) = 0;
2 Likes

không biết viết hàm chỗ đó như nào anh ơi

#include <stdio.h>
int Chusole(int n)
{ if(n == 0) return 0; 
  if(n%2 == 1) return Chusole(n/10) + 1;
  return Chusole(n/10);
}

void main()
{   int n;
    printf("n="); scanf("%d",&n);       
    printf("\n %d co %d so le",n, Chusole(n));   }
1 Like

Hello bạn,

Để giải bài toán đếm số lượng chữ số lẻ của một số nguyên dương n bằng C++, ta có thể sử dụng phương pháp đệ quy đuôi như sau:

c++Copy code

#include <iostream>
using namespace std;

int count_odd_digits(int n, int count=0) {
    if (n == 0) {
        return count;
    } else {
        int last_digit = n % 10;
        if (last_digit % 2 == 1) {
            count += 1;
        }
        n /= 10;
        return count_odd_digits(n, count);
    }
}

int main() {
    int n;
    cout << "Enter a positive integer: ";
    cin >> n;
    int result = count_odd_digits(n);
    cout << "Number of odd digits in " << n << ": " << result << endl;
    return 0;
}

Ở đây, hàm count_odd_digits được định nghĩa để đếm số lượng chữ số lẻ của số nguyên dương n . Hàm này có hai tham số đầu vào: n là số nguyên dương cần đếm chữ số lẻ, và count là biến đếm số chữ số lẻ đã tìm thấy (mặc định ban đầu là 0). Hàm sử dụng phương pháp đệ quy đuôi để thực hiện công việc này.

Trong hàm main , chúng ta yêu cầu người dùng nhập một số nguyên dương bất kỳ từ bàn phím. Sau đó, chúng ta gọi hàm count_odd_digits để đếm số lượng chữ số lẻ của số nguyên này và in kết quả ra màn hình.

Ví dụ, nếu chúng ta nhập số nguyên dương 12345, chương trình sẽ in ra “Number of odd digits in 12345: 3” (tức là số lượng chữ số lẻ của số 12345 là 3).

Chúc bạn ngày mới học tập hiệu quả nhé

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