一个复杂加和公式的递归算法
2017-03-19 20:11
204 查看
我的解法如下:
/**
* 复杂递归的计算,这个好像O(n^n)
* 用来计算上面那个公式的方法
* @param num
* @return
*/
public double getResult(int num)
{
//递归出口,即N=0时,公式的和
if(num == 0)
{
return 4.0 / 3;
}
double sum = 0;
//这里进行递归
//这里并不好,因为每个不同的整数i都要独立计算,没有利用前面i-1的计算资源
//所以算法运行时间过长
for(int i = 0; i < num; i++)
{
sum += this.combine(i, num) * getResult(i);
}
return sum / 3;
}
/**
* 递归方法求组合数
* @param up 上标
* @param down 下标
* @return
*/
public int combine(int up, int down)
{
//1.递归出口
if(up == 0)
{
return 1;
}
//2.小于一半时进入递归
if(up <= down / 2)
{
return (down - up + 1) / up * combine(up - 1, down);
}
//3.大于一半时,可以将其化为小于一半的请款
//以节省计算资源
else
{
return combine(down - up, down);
}
}这个算法运行时间模式不好,递归时没有利用前面的计算资源,不符合递归的第四原则:最佳合成效益原则。后续想办法再做改进。
相关文章推荐
- 另外一个复杂公式
- Matlab显示Latex公式 Interpreter属性使我们能在图形中显示一个较为复杂的公式
- 计算递归算法时间复杂度通用公式
- 在csdn上看到的一个关于得到00000到99999递归算法~
- 判断一个点是否在一个复杂的多边形中
- (旧贴)一个复杂的boost.lambda表达式的例子
- 一个复杂hibernate映射文件
- 写一个类,实现复杂对象的拷贝构造
- 使用开源的.NET工具构造一个复杂的 自动构建 环境
- 一个关于bug度量的公式 (转)
- 网上看到的关于bug度量的一个公式
- 一个水晶报表的数字转换成中文大写的公式!
- 一个算式算男人和女人的公式
- 脚本复杂又简单--一个菜单模块
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- 创造一个完全不可能重复的整数(以更新公式说明部分)
- Excel统计成绩经常用到的一个公式(根据分数给出优,良,中,差)
- 给大家发一个DDOS防御包算法公式
- 查询预警中的一个较为复杂的存储过程--dhg
- 亲身体验:更改 Team Foundation Server 部署的语言版本是一个复杂耗时的过程