递归的两个基本法则
1、基准情形。必须总要有某些基准的情形,它们不用递归就能求解。
2、不断推进。递归的调用必须总能朝着一个基准情形推进。
例如:
public static int f(int x){
if(x==0)
return 0; //这两行为基准情形。
else
return 2*f(x-1)+x*x;
}
使用递归打印输出整数(可以用归纳法证明):
public static void printOut(int n){
if(n>=10)
printOut(n/10);
printDigit(n%10); //printDigit(4)将输出4
}
注意:使用mod例程非常耗时,因为n%10=n-(n/10)*10;
递归的其他法则:
3、设计法则。假设递归调用都能运行。(不必追踪具体的递归调用的序列)
4、合成效益法则。再求解一个问题的同一实例时,切勿在不同的递归调用中做重复性工作。
时间: 2024-10-10 21:35:17