Giả sử, chúng ta có một số nguyên N> 0. Nhiệm vụ là tìm tích các chữ số lớn nhất trong số các số nhỏ hơn hoặc bằng N. Nếu N là 390 thì kết quả là 216, vì số 389 tạo ra sản phẩm tối đa 3 * 8 * 9 =216.
Để giải quyết vấn đề này, chúng ta sẽ sử dụng phương pháp đệ quy. Vì vậy, nếu N =0 thì trả về 1, nếu số N <10 thì trả về N, ngược lại trả về max (max_product (N / 10) * (N mod 10), max_product ((N / 10) - 1) * 9 )
Ví dụ
#include<iostream> using namespace std; int max_product(int N) { if (N == 0) return 1; if (N < 10) return N; return max(max_product(N / 10) * (N % 10), max_product(N / 10 - 1) * 9); } int main() { int N = 432; cout << "Maximum product is: " << max_product(N); }
Đầu ra
Maximum product is: 243