資料結構 遞迴思想

2021-09-25 17:34:26 字數 2020 閱讀 8413

一、漢諾塔

#include "stdio.h"

#include "stdlib.h"

void move(int n, char x, char y, char z)

else }

int main()

二、斐波那契數列

#include "stdio.h"

#define maxsize 40

void iterfib(void)

printf("\n");

}int fib(int i)

void fibresult(void)

printf("\n");

}void print(void)

void main()

三、二分查詢

#include "stdio.h"

int p2p(int high, int low, int *l, int x)

mid = (int)(high + low) / 2;

if(l[mid] == x)

return mid;

else if(l[mid] > x)

return p2p(mid, low, l, x);

else

return p2p(high, mid, l, x);

}void p2presult(int num)

; int flag;

flag = p2p(9, 0, &a, num);

if(flag < 0)

printf("error: number is not found\n");

else

printf("the number index is %d\n", flag);

}void main()

四、八皇后問題

#include "stdio.h"

int count = 0;

/****************************

row: 起始行

n: 列

(*chess)[8]:每一行指標

*****************************/

int notdanger(int row, int j , int (*chess)[8])

}// 判斷左上

for ( i = row, k = j ;i >= 0 && k >= 0 ; i--, k--)

}// 判斷右下

for ( i = row, k = j ;i < 8 && k < 8 ; i++, k++)

}// 判斷右上方

for ( i = row, k = j; i >=0 && k < 8; i--, k++)

}// 判斷左下方

for ( i = row, k = j; i < 8 && k >= 0; i++, k--)

}if (flag1 || flag2 || flag3 || flag4 || flag5)

else

}void eightqueen(int row, int n, int (*chess)[8])

}if (8 == row)

printf("\n");

}printf("\n");

count ++;

}else

*(*(chess2 + row) + j) = 1;

eightqueen(row + 1, n, chess2);

}}

}}int main()

}eightqueen(0, 8, chess);

printf("總共有%d種解決方法\n\n", count);

return 0;

}

資料結構 遞迴思想及遞迴實現迷宮問題

遞迴 就是自己呼叫自己,然後一層層返回 乙個簡單的例子 列印問題 public static void main string args 列印問題 我們可以分析這個程式的執行過程 程式的方法在虛擬機器的棧空間執行 這就是遞迴的過程 有這樣乙個迷宮,從起點到終點,紅色是牆,黃色的是路,可以走,一次走一...

資料結構和演算法(遞迴和分治思想)

遞迴 乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式 分治思想 將乙個問題分為幾個小的模組,逐一解決 輸入任意長度的字元,並反向輸出 遞迴 include void print if a int main void 斐波那契數列實現 迭代 遞迴 斐波拉契數列 include...

資料結構思想

程式的好壞一般來說有2個標準,乙個是時間複雜度,乙個是空間複雜度。時間複雜度說的是程式執行的時間 空間複雜度說的是程式的記憶體占用的多少。而資料結構就是為了解決時間複雜度的,或者說乙個好的資料結構 演算法 可以節省程式執行的時間。顧名思義,線性表是一條線的。首先要稍稍提一下,資料結構的儲存只有陣列 ...