问题描述:
给定一个整数n和一个整数k, 对该整数进行拆分,拆分成两个数,使得两数之和等于n,两数之查等于k,对拆分后的两个数再进行拆分,直到不能再拆分为止,求所有拆分后的数的个数。
分析:假设一次拆分后的数为x,y,则满足下面的公式
x+y=n;
x-y=k;
也可以理解为一个二叉树结构
//递归实现的代码
int leafcout(int n, int k)
{
if (n <= k + 1 || (n + k) % 2 != 0) {
return 1;
}
int x = (n + k) / 2;
int y = (n - k) / 2;
return leafcout(x, k) + leafcout(y, k);
}