角谷定理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;

------------------ * /


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部