新建
上传
首页
助手
最?/div>
资料?/div>
工具

猴子分桃递归算法分析?/p>

 

/*

 

  

 

    X

个桃?/p>

 

?/p>

5

只猴?/p>

 

第一只猴?/p>

 

?/p>

x

个桃子分?/p>

5

?/p>

 

还多出一?/p>

 

他把多了那个扔进大海

 

拿走了一

?/p>

 

第二只猴子也是如?/p>

  

等到第五只猴?/p>

 

海滩至少能分?/p>

1

个桃子。问海滩上原?/p>

x

是多少个桃子?/p>

 

非递归算法描述?/p>

 

数学抽象:假设海滩上现在?/p>

x

个桃子,那么

x

向下再分一次,也就?/p>

n-1

只猴子有桃可分的条件?/p>

须满?/p>

 

?/p>

x-1

)是

5

的倍数。下一只猴子再分桃,就?/p>

x

?/p>

5

分之

4. N-1

只猴子再分桃的条件就必须满足

 

?/p>

x-1

?/p>

*4/5  

依次类推

 

算法设计:一个数

 x

去判?/p>

 x-1

是否能被

5

整除。如果可以,则把自己的五分之?/p>

 

拿出?/p>

 

作为下一

?/p>

 

分桃的基数,再进?/p>

 

下一轮判断。总共判断

5

轮,每一轮满足条件记为真,不满足记为假。只?/p>

5

轮都为真

 

则找?/p>

x 

否则

 x

继续

++ 

。实现下一?/p>

5

轮判断?/p>

 

 

 

 

 

  */

 

namespace

 

递归?/p>

_

猴子分桃?/p>

 

{ 

    

class

 

Program

 

    { 

        

static

 

int

 fen()

//

返回海滩上原来最少多少桃?/p>

       

 

        { 

            

int

 m; 

            

bool

 check 

=

 

false

; 

//

用于判断是否执行了五次,亦可?/p>

j==5

作为?/p>

 //

断条?/p>

            

 

            

int

 i 

=

 

0

; 

            

while

 (

true

) 

            { 

                i

++

; 

                m 

=

 i; 

                

for

 (

int

 j 

=

 

0

; j 

<

 

5

; j

++

) 

                { 

                    

if

 ((m 

-

 

1

) 

%

 

5

 

!=

 

0

)

//

判断

m-1

是否?/p>

  //

整除,亦可用

(m-1)%5!=0

代替

                      

 

                    { 

                        check 

=

 

false

; 

                        

break

; 

                    } 

                    

else

 

                    { 

                        m 

=

 (m 

-

 

1

) 

*

 

4

 

/

 

5

; 

                        check 

=

 

true

; 

                    } 

                } 

                

if

 (check 

==

 

true

) 

                { 

                    

return

 i; 

                } 

            } 

        } 

        

//

递归算法

 

/*  

递归算法

 

     

数学抽象,与非递归刚好相反,递归是倒退,从最后一只猴子向上推理?/p>

 

假设当前猴子?/p>

x

个桃

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

猴子分桃递归算法分析?/p>

 

/*

 

  

 

    X

个桃?/p>

 

?/p>

5

只猴?/p>

 

第一只猴?/p>

 

?/p>

x

个桃子分?/p>

5

?/p>

 

还多出一?/p>

 

他把多了那个扔进大海

 

拿走了一

?/p>

 

第二只猴子也是如?/p>

  

等到第五只猴?/p>

 

海滩至少能分?/p>

1

个桃子。问海滩上原?/p>

x

是多少个桃子?/p>

 

非递归算法描述?/p>

 

数学抽象:假设海滩上现在?/p>

x

个桃子,那么

x

向下再分一次,也就?/p>

n-1

只猴子有桃可分的条件?/p>

须满?/p>

 

?/p>

x-1

)是

5

的倍数。下一只猴子再分桃,就?/p>

x

?/p>

5

分之

4. N-1

只猴子再分桃的条件就必须满足

 

?/p>

x-1

?/p>

*4/5  

依次类推

 

算法设计:一个数

 x

去判?/p>

 x-1

是否能被

5

整除。如果可以,则把自己的五分之?/p>

 

拿出?/p>

 

作为下一

?/p>

 

分桃的基数,再进?/p>

 

下一轮判断。总共判断

5

轮,每一轮满足条件记为真,不满足记为假。只?/p>

5

轮都为真

 

则找?/p>

x 

否则

 x

继续

++ 

。实现下一?/p>

5

轮判断?/p>

 

 

 

 

 

  */

 

namespace

 

递归?/p>

_

猴子分桃?/p>

 

{ 

    

class

 

Program

 

    { 

        

static

 

int

 fen()

//

返回海滩上原来最少多少桃?/p>

       

 

        { 

            

int

 m; 

            

bool

 check 

=

 

false

; 

//

用于判断是否执行了五次,亦可?/p>

j==5

作为?/p>

 //

断条?/p>

            

 

            

int

 i 

=

 

0

; 

            

while

 (

true

) 

            { 

                i

++

; 

                m 

=

 i; 

                

for

 (

int

 j 

=

 

0

; j 

<

 

5

; j

++

) 

                { 

                    

if

 ((m 

-

 

1

) 

%

 

5

 

!=

 

0

)

//

判断

m-1

是否?/p>

  //

整除,亦可用

(m-1)%5!=0

代替

                      

 

                    { 

                        check 

=

 

false

; 

                        

break

; 

                    } 

                    

else

 

                    { 

                        m 

=

 (m 

-

 

1

) 

*

 

4

 

/

 

5

; 

                        check 

=

 

true

; 

                    } 

                } 

                

if

 (check 

==

 

true

) 

                { 

                    

return

 i; 

                } 

            } 

        } 

        

//

递归算法

 

/*  

递归算法

 

     

数学抽象,与非递归刚好相反,递归是倒退,从最后一只猴子向上推理?/p>

 

假设当前猴子?/p>

x

个桃

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

猴子分桃递归算法分析?/p>

 

/*

 

  

 

    X

个桃?/p>

 

?/p>

5

只猴?/p>

 

第一只猴?/p>

 

?/p>

x

个桃子分?/p>

5

?/p>

 

还多出一?/p>

 

他把多了那个扔进大海

 

拿走了一

?/p>

 

第二只猴子也是如?/p>

  

等到第五只猴?/p>

 

海滩至少能分?/p>

1

个桃子。问海滩上原?/p>

x

是多少个桃子?/p>

 

非递归算法描述?/p>

 

数学抽象:假设海滩上现在?/p>

x

个桃子,那么

x

向下再分一次,也就?/p>

n-1

只猴子有桃可分的条件?/p>

须满?/p>

 

?/p>

x-1

)是

5

的倍数。下一只猴子再分桃,就?/p>

x

?/p>

5

分之

4. N-1

只猴子再分桃的条件就必须满足

 

?/p>

x-1

?/p>

*4/5  

依次类推

 

算法设计:一个数

 x

去判?/p>

 x-1

是否能被

5

整除。如果可以,则把自己的五分之?/p>

 

拿出?/p>

 

作为下一

?/p>

 

分桃的基数,再进?/p>

 

下一轮判断。总共判断

5

轮,每一轮满足条件记为真,不满足记为假。只?/p>

5

轮都为真

 

则找?/p>

x 

否则

 x

继续

++ 

。实现下一?/p>

5

轮判断?/p>

 

 

 

 

 

  */

 

namespace

 

递归?/p>

_

猴子分桃?/p>

 

{ 

    

class

 

Program

 

    { 

        

static

 

int

 fen()

//

返回海滩上原来最少多少桃?/p>

       

 

        { 

            

int

 m; 

            

bool

 check 

=

 

false

; 

//

用于判断是否执行了五次,亦可?/p>

j==5

作为?/p>

 //

断条?/p>

            

 

            

int

 i 

=

 

0

; 

            

while

 (

true

) 

            { 

                i

++

; 

                m 

=

 i; 

                

for

 (

int

 j 

=

 

0

; j 

<

 

5

; j

++

) 

                { 

                    

if

 ((m 

-

 

1

) 

%

 

5

 

!=

 

0

)

//

判断

m-1

是否?/p>

  //

整除,亦可用

(m-1)%5!=0

代替

                      

 

                    { 

                        check 

=

 

false

; 

                        

break

; 

                    } 

                    

else

 

                    { 

                        m 

=

 (m 

-

 

1

) 

*

 

4

 

/

 

5

; 

                        check 

=

 

true

; 

                    } 

                } 

                

if

 (check 

==

 

true

) 

                { 

                    

return

 i; 

                } 

            } 

        } 

        

//

递归算法

 

/*  

递归算法

 

     

数学抽象,与非递归刚好相反,递归是倒退,从最后一只猴子向上推理?/p>

 

假设当前猴子?/p>

x

个桃

Ͼλ">
Ͼλ
Ŀ

关于猴子分桃的算法讲?- 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

猴子分桃递归算法分析?/p>

 

/*

 

  

 

    X

个桃?/p>

 

?/p>

5

只猴?/p>

 

第一只猴?/p>

 

?/p>

x

个桃子分?/p>

5

?/p>

 

还多出一?/p>

 

他把多了那个扔进大海

 

拿走了一

?/p>

 

第二只猴子也是如?/p>

  

等到第五只猴?/p>

 

海滩至少能分?/p>

1

个桃子。问海滩上原?/p>

x

是多少个桃子?/p>

 

非递归算法描述?/p>

 

数学抽象:假设海滩上现在?/p>

x

个桃子,那么

x

向下再分一次,也就?/p>

n-1

只猴子有桃可分的条件?/p>

须满?/p>

 

?/p>

x-1

)是

5

的倍数。下一只猴子再分桃,就?/p>

x

?/p>

5

分之

4. N-1

只猴子再分桃的条件就必须满足

 

?/p>

x-1

?/p>

*4/5  

依次类推

 

算法设计:一个数

 x

去判?/p>

 x-1

是否能被

5

整除。如果可以,则把自己的五分之?/p>

 

拿出?/p>

 

作为下一

?/p>

 

分桃的基数,再进?/p>

 

下一轮判断。总共判断

5

轮,每一轮满足条件记为真,不满足记为假。只?/p>

5

轮都为真

 

则找?/p>

x 

否则

 x

继续

++ 

。实现下一?/p>

5

轮判断?/p>

 

 

 

 

 

  */

 

namespace

 

递归?/p>

_

猴子分桃?/p>

 

{ 

    

class

 

Program

 

    { 

        

static

 

int

 fen()

//

返回海滩上原来最少多少桃?/p>

       

 

        { 

            

int

 m; 

            

bool

 check 

=

 

false

; 

//

用于判断是否执行了五次,亦可?/p>

j==5

作为?/p>

 //

断条?/p>

            

 

            

int

 i 

=

 

0

; 

            

while

 (

true

) 

            { 

                i

++

; 

                m 

=

 i; 

                

for

 (

int

 j 

=

 

0

; j 

<

 

5

; j

++

) 

                { 

                    

if

 ((m 

-

 

1

) 

%

 

5

 

!=

 

0

)

//

判断

m-1

是否?/p>

  //

整除,亦可用

(m-1)%5!=0

代替

                      

 

                    { 

                        check 

=

 

false

; 

                        

break

; 

                    } 

                    

else

 

                    { 

                        m 

=

 (m 

-

 

1

) 

*

 

4

 

/

 

5

; 

                        check 

=

 

true

; 

                    } 

                } 

                

if

 (check 

==

 

true

) 

                { 

                    

return

 i; 

                } 

            } 

        } 

        

//

递归算法

 

/*  

递归算法

 

     

数学抽象,与非递归刚好相反,递归是倒退,从最后一只猴子向上推理?/p>

 

假设当前猴子?/p>

x

个桃



ļ׺.doc޸Ϊ.docĶ

  • ¡ɽа꼶ϲڶԪȽ̽յ̰ʦ
  • йҾҵ״Ʒ
  • źŴϰ⼯()
  • c++һģ()
  • Сʯ̶ǡп⼯
  • ôƽСѧΪϰߵĸ(һλҽʦijɹ)
  • е·Ƹϰ⼰ο
  • ҷί55
  • 繤ʵѵܽᱨ棨MF47ñԭװģ
  • Ͳũҵƻ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)