Cho N > 0. Tìm tích chữ số lớn nhất trong các số ≤ N. N=390, kết quả 216 vì 389 cho 3*8*9=216.
Dùng đệ quy: N=0 trả 1; N<10 trả N; ngược lại max(max_product(N/10)*(N%10), max_product(N/10-1)*9).
Ví dụ mã nguồn
#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); } Kết quả
Maximum product is: 243