c语言--算法 递归 分治


一、递归与分治的概念

分治:将一个问题分解为若干个小问题,我们称这个方法为分治。
递归:直接或间接的调用算法本身,我们称这种方式为递归。


二、递归示例

#include "stdio.h"
int fun(int n){
    if(n==0) return 1;     
    return n*fun(n-1);
 }

int main(){
  int t,t1;
  printf("输入参加阶乘的数:\n");
  scanf("%d",&t);
  t1 = fun(t);
  printf("数字%d的阶乘为:%d\n",t,t1);
}

[root@localhost ~]#./t
输入参加阶乘的数:
6
数字6的阶乘为:720

三、递归算法注意事项

3.1 递归算法必须拥有一个结束标志,否则递归循环将会无止尽的执行,例(if(n==0) return 1 就是递归的结束标志。
3.2 递归算法适用于事物本身就具有递归性,
例(设计一个部门表(部门id ,父级Id,部门名称))
fun(父级id){
list t =符合条件的部门信息;
if(t.length ==0){return;} //递归终止标志
for(i=0;i