汉诺塔模型数据结构递归算法动画解析【原创

来源:https://www.sucaihuo.com/js/2215.html 2017-06-21 07:10浏览(2498) 收藏

实例中使用了jQuery框架中很少用的one方法为按钮绑定触发一次事件,还是使用了animate自定义了队列动画。实例中使用的是常规的Ajax方法向服务器请求完成动画需要的所有数据参数,服务器端使用的脚本语言是PHP,用到了PHP的可变变量、递归算法等知识点。虽然本实例使用的知识点比较多,但是思路清晰,能帮助学习数据结构和算法的人很容易理解队列、栈的原理。
汉诺塔模型数据结构递归算法动画解析
分类:PHP > 函数 难易:高级
下载资源 下载积分: 60 积分
$(function(){
      	$(".animate-btn").one("click",function(){
                    $.ajax({
                        type: 'POST',
                        url:  'getData.php',
                        data:{num:$(".woodblock").length},
                        dataType: 'json',
                        success: function(msg) {
                              var data =    new Array();
                              for(var obj in msg){
                                  data.push([msg[obj].name,msg[obj].obj,msg[obj].source,msg[obj].left,msg[obj].bottom]);
                              }

                              var i = 0;
                              setInterval(function(){
                                   $(".move"+data[i][0]).animate({bottom:'300px'},'fast');
                                   $(".move"+data[i][0]).animate({left:data[i][3]+'px'},'fast');
                                   $(".move"+data[i][0]).animate({bottom:data[i][4]+'px'},'fast');
                                   i++
                              },1500);
                        }

                        })      
                })
      })
<?php  
$num       = $_POST['num'];
//将所有圆盘从a移到b  
$data      = array();
function hanuota($n,$a,$b,$c){  
    global $step; 
    global $data; 
    global $A;
    global $B;
    global $C;
    if($b === 'C'){
    	$left    = 750-10*$n;
    }else if($b === 'B'){
    	$left    = 450-10*$n; 
    }else{
    	$left    = 150-10*$n;
    }
    if($n==1){  
        $step++;
        $data[$step]     = array('name'=>$n,'obj'=>$a,'source'=>$b,'left'=>$left,'bottom'=>$$b); 
        $$a -= 20;
        $$b += 20;
    }else{  
        hanuota($n-1,$a,$c,$b);  
        $step++; 
        $data[$step]     = array('name'=>$n,'obj'=>$a,'source'=>$b,'left'=>$left,'bottom'=>$$b);
        $$a -= 20;
        $$b += 20;
        hanuota($n-1,$c,$b,$a);  
    }  
    return $data;
}  
//移动的次数  
$step = 0; 
$data = array(); 
$A    = 200;
$B    = 0;
$C    = 0;
$databack = hanuota($num, 'A', 'B', 'C'); 
echo json_encode($databack);
 
?>
标签: 模型数据算法
声明:本文为原创文章,如需转载,请注明来源sucaihuo.com并保留原文链接:https://www.sucaihuo.com/js/2215.html
评论0
头像

系统已开启自动识别垃圾评论机制,识别到的自动封号,下载出错或者资源有问题请联系全栈客服QQ 1915635791

1 2