乙個遞迴問題

2021-06-22 00:19:15 字數 1404 閱讀 4951

//  created by baicai on 14-5-10.

// 遞迴問題

/* 遞迴中兩個重要的點 : 1.遞迴公式 2.終止條件 */

/* 函式的區域性變數存在棧中,可能會棧溢位,所以可以考慮使用全域性陣列,或者動態分配陣列 */

/* 遊戲問題: 類似迷宮求解,自相似性表現在每走一步的探測方式相同,可以用遞迴方法求解,

通過列舉出所有從起點到終點的路徑

*/// 需要乙個記錄

// 方向陣列 to[4][2] = ,,,};

/* for(int i=0;i<4;i++)

int x = now_x + to[i][0];

int y = now_y + to[i][1];

f = i; // 方向

限制:邊界

(x > -1) && x<( w+2) && (y>-1) && (y< h+2)

有沒有遊戲卡片曾走過

((board[y][x] == ' ') && ( mark[y][x] == false ))

已經到達終點

(x == end_x) && (y == end_y) && (borad[y][x] == 'x')

終止條件: t1&&(t2||t3)

*/#include #include #include using namespace std;

int w;

int h;

int board[77][77];

int to[4][2] = ,,,}; // 東南西北

bool mark[77][77]; // 標記是否走過

int minstep;

int count;

void search(int x,int y,int x_end,int y_end,int f,int step)

if (x == x_end && y == y_end)

}// 列舉搜尋方向

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

++boardnum;

printf("board #%d:\n",boardnum);

int i,j;

for (i = 0; i < (w+2); i++)

for (i = 1 ; i<=h; i++)

}for (i=0; i<=w; i++)

int begin_x,begin_y,end_x,end_y,count = 0;

while (cin>>begin_x>>begin_y>>end_x>>end_y) // 少了一些條件語句

else

cout<<"impossibe"<}

cout<}

return 0;

}

java遞迴的乙個問題

據說比達格斯理論家,又稱一群在必達格斯領導下工作的古希臘數學家,發現在數字序列 1,3,6,10,15,21 中有奇怪的聯絡 這個數列中第n項由第n 1項加n得到的。效率問題 呼叫乙個方法會有一定的額外開銷。控制必須從這個呼叫的位子轉移到這個方法的開始處。除次之外,傳給這個方法的引數以及 這個方法返...

乙個遞迴演算法

要求實現1,1,2,3,5,8,13,21,這樣乙個序列。分析一下輸出結果 發現後乙個數字是前2個數字的和。遞迴演算法如下 public static int recursion int i if i 0 return 0 else if i 0 i 2 return 1 else return r...

java 遞迴的乙個問題記錄

問題 第一行是乙個數字n 接下來m個數字在陣列a中 要求輸出對應下標使去掉這些數字時剩下的數字之和為n 例如 3 2 4 3 1 此時,程式輸出 0 20 3 4 1 2 4 2 3 如下 public class main public static void main string args b...