角谷定理python每次输出数_角谷定理C++递归问题,求问步数为什么总输出0?
匿名用户
1级
2014-06-13 回答
源代码如下:
/ /斐波那契序列比较算法项目N个程序,用VC + +6.0编译通过
#包括
>长FIB1(INT N);
长fib2(INT N);
INT I = 0; / /操作数
/ / ---------------开始的main()------------
>无效的主要()
{
诠释n = 0;
法院<
CIN >> N; / /输入参数为n
法院<< ENDL << ENDL; / /显示两个空行
/ /测试案例/> I = 0;经营计数器/ /数清零
法院<
COUT <
法院<< ENDL;
/ /结果表明很差运营效率,递归调用的次数居然达到了两倍-1次操作数值结果。
/ /在N = 20的竞争达到呼叫13529倍的数量的情况下。灵感
/ /但得到的是你是否可以使用这条规则推导公式。
/ /这是一个使用案例/ 2
/ /测试循环算法的结果=(递归调用1号)------------- -----
我= 0;经营计数器/ /数清零
法院<
COUT <
法院<< ENDL;
/ /结果显示:高运营效率,经营甚至在有条件的增幅只有n次
/ /在N = 20的情况下,前面的总数只需要循环18次,甚至两次判决可以被认为是计算20次。
} / / ----------------结束的main()--------------
BR /> / / ---------------开始fib2()------------
长FIB1(诠释n)/ /使用递归调用
i + +; / /的操作计数器数,不包括在算法复杂度统计。
开关(N)/ /
{/ /
情况下0:返回0; / / -----每次通话不能跳过的判断操作(复杂性未知)。
案例1:/ /
案例2:返回1; / /
} / /
回报FIB1(N-1)+ FIB1(N-2); / /主计算表,每个呼叫相当于两倍的加法运算并返回(至少等于分配),同时也为递归调用(复杂性是未知的)。
} / / --------------结束FIB1()--------------
/ / - --------------开始fib2()------------
长fib2(诠释n)/ /使用循环
{ BR />整数K = 0;
长为a = 1,B = 1,C = 0;
如果(N == 0)/ /根据n的值可以算作一个,以确定操作包括三名算法的复杂性。
{/ /
返回0; / /
} / /
否则,如果(N = 1 | | N = 2)/ / - |
{/ / |
返回1; / / | ---考虑到这个初始循环条件判断的多功能性可以移动,但效率不会是最优的,
} / / - |时钟周期在每个周期的经验增加了1-2倍的判断操作,增加了算法的复杂性。
{
为(k = 2时,K
{
B = A +(C = B) ; / /
A = C; / /(写为c = b的,B = A + B; A = C ;)语句实际操作中,只有一个加法器和3分配。
i + +; / /计算计数器的数量,该算法的复杂性,不包含在统计信息。
返回b;
/ / --------------结束fib2()--------------
/ *上面fib2()的代码,以简化的形式如下:
长fib2(诠释n){
整数K = 0;
长为a = 1,B = 1,C = 0;
如果(N == 0)
返回0;
如果(N = 1 | | N = 2)
返回1;
为(k = 2时,K
B = A +(C = B); A = C;
}
retrun b;
------------------ * /
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
