这个例子演示如何利用递归来完成分解质因数。
import java.util.List;import java.util.ArrayList;/** * 分解质因数 */public class GetFacTor { public static void main(String[] args) { List facTors = getFacTors(5555566666L, 2); System.out.println(facTors); } /** * 通过递归实现分解质因数 * * @param n 要分解的数字 * @param facTor 起始因子 * * @return 分解结果 */ private static List getFacTors(long n, long facTor) { // 不断增大 facTor 直到能整除n while (n % facTor != 0 && facTor < n) { // 得到 2,3,5,7,9,11,13,... facTor = facTor < 2 ? 2 : facTor == 2 ? 3 : facTor + 2; } List result; if (facTor >= n) { // 因子已经涨到和 n 一样大,说 明 n 本身就是因子。这时递归完成。 result = new ArrayList(); } else { // 因子能够整除 n,于是继 续分解除以因子后的结果 result = getFacTors(n / facTor, facTor); // 向 下递归 } result.add(facTor); return result; }}
联系朋友别欠费,天空辽阔任你飞,再多困难别后退! “