做盗版网站违法吗,wordpress 图片分享,中国网络技术有限公司,中建八局一公司官网【0】README
0.1#xff09; 本文总结于 数据结构与算法分析#xff0c;旨在了解设计 递归程序 的相关法则和技巧#xff1b; 0.2#xff09; 我记忆尤新的一点是#xff1a; 凡事可以用循环代替的递归函数#xff0c;它就不是一个好的递归函数#xff0c;对我帮助很大…【0】README
0.1 本文总结于 数据结构与算法分析旨在了解设计 递归程序 的相关法则和技巧 0.2 我记忆尤新的一点是 凡事可以用循环代替的递归函数它就不是一个好的递归函数对我帮助很大设计完递归函数后可以检验下该递归函数是否可以用循环代替 【1】 递归简论
1.1当编写递归例程的时候关键是要牢记递归的四条基本法则-Principle
P1基准情形必须总是有某些基准情形它无需递归就能解除P2不断推进对于那些需要递归求解的情形每一次递归调用都必须要是求解状况朝接近基准情形的方向前进P3设计法则假设所有的递归调用都能运行P4合成效益法则compound interest rule在求解一个问题的同一实例时 切勿在不同的递归调用中作重复性工作 【2】看三个荔枝
2.1荔枝1 代码参见 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/blob/master/chapter1/p6.c source code at a glance
#includestdio.h/* 满足F(0)0 且 F(X)2F(X-1)X^2 */int F(int);int main()
{ for(int i 0; i 10; i)printf(F(%d) %-4d\n,i,F(i));
}int F(int x)
{if(x 0)return 0;else return 2 * F(x - 1) x * x;
} 2.2荔枝2一个错误的递归函数 source code at a glance 2.3荔枝3
代码参见 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/blob/master/chapter1/p8.c source code at a glance
#includestdio.h/*打印整数的递归例程, 如1234 打印为 1 2 3 4*/
void printout(unsigned int N);main()
{ int temp 1234554;printf(%d 可分解为 ,temp); printout(temp);printf(\n);
}void printout(unsigned int N)
{if(N 10)printout(N / 10);printf( %d,N % 10);
}