首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

调试了一个水桶分水的递归程序//如何递归函数回滚返回,添加的元素一个一个的消失。

2013-09-28 
调试了一个水桶分水的递归程序//怎么递归函数回滚返回,添加的元素一个一个的消失。。。。递归函数里递归10次

调试了一个水桶分水的递归程序//怎么递归函数回滚返回,添加的元素一个一个的消失。。。。
递归函数里递归10次 双端队列对象states.push_back(next);添加十次元素,等递归函数结束,回滚返回10 9 8 7次的递归调用时,添加的元素就消失了??????


void SearchStateOnAction(deque<BucketState>& states, BucketState& current, int from, int to)
 {
   if(IsCurrentActionValid(current, from, to))
   {
       BucketState next;
       bool bDump = current.DumpWater(from, to, next);
       if(bDump && !IsProcessedState(states, next))
       {
           states.push_back(next);
       SearchState(states);
           states.pop_back();
   int j =0;
       }
    }
 }



 void SearchState(deque<BucketState>& states)

{

    BucketState current = states.back();

   if(current.IsFinalState())
    {

      PrintResult(states);

       return;

     }



   for(int j = 0; j < buckets_count; ++j)

   {

    for(int i = 0; i < buckets_count; ++i)

      {

           SearchStateOnAction(states, current, i, j);

      }

     }

 }
[解决办法]
每次递归后面跟一个 pop,元素数目当然要依次减少了。
[解决办法]
search state只是搜索的中间状态。找到答案了当然要存到另一个地方去。单独一个状态是无法同时表示搜索中间状态和最后答案的。

热点排行