用C語言遞歸實現因數分解,比如54=3*3*3*2,不得使用循環
#include <stdio.h>
int isPrime(int n, int acc)
{
if (n == 2) return 1;
if (acc == 1) return 1;
if (n % acc == 0) return 0;
return isPrime(n, acc - 1);
}
void foo(int n, int acc)
{
if (n % acc == 0 && isPrime(acc, acc - 1) && n == acc) { printf("%d", acc); return; }
if (n % acc == 0 && isPrime(acc, acc - 1))
{
printf("%d*", acc);
foo(n / acc, acc);
}
foo(n, acc - 1);
}
int main()
{
int n = 54;
foo(n, n);
}