递归法解析及应用(杀毒软件怎么遍历文件)
//公园里有200个桃子,猴子每天吃掉一半,扔掉一个烂的,第6天剩余多少。
1 var a=200; 2 for(var i=1;i<7;i++){ 3 a=parseInt(a/2)-1; 4 } 5 alert(a);
//公园里有一堆桃子,猴子每天吃掉一半,扔掉一个烂的,第6天剩余1个,一共有多少桃子。
1 var a=1; 2 for(i=1;i<7;i++){ 3 a=(a+1)*2; 4 } 5 alert(a);
//递归法
//当天数量=(下一天+1)*2
//函数明确:给出天数,输出该天剩余的桃子数量
1 function shuLiang(ts){ 2 if(ts==6){ 3 return 1; 4 } 5 return (shuLiang(ts+1)+1)*2; 6 } 7 alert(shuLiang(1));
分析递归法运行过程:
1 //第一次执行 2 function shuLiang(1){ 3 return (shuLiang(1+1)+1)*2; //卡住 4 } 5 //第二次执行 6 function shuLiang(2){ 7 return (shuLiang(2+1)+1)*2; //卡住 8 } 9 //第三次执行 10 function shuLiang(3){ 11 return (shuLiang(3+1)+1)*2; //卡住 12 } 13 //第四次执行 14 function shuLiang(4){ 15 return (shuLiang(4+1)+1)*2; //卡住 16 } 17 //第五次执行 18 function shuLiang(5){ 19 return (shuLiang(5+1)+1)*2; //卡住 20 } 21 //第六次执行 22 function shuLiang(6){ 23 if(6==6){ 24 return 1; 25 } 26 } 27 //此时上面shuLiang(5+1)即是1,便执行第五次,alert4;执行第四次,alert10;执行第三次,alert22;执行第二次,alert46;执行第一次,alert94。
应用举例:杀毒软件怎么扫描全部文件,采用递归法
给一个文件夹,求该文件夹下所有文件数量
函数功能明确:给一个文件夹,返回该文件夹下文件的数量
function shuLiang(文件夹路径){
var sum=0;
打开文件夹遍历所有文件
if(是文件){
sum++;
}else{
sum=sum+shuLiang(文件夹路径)
}
return sum;
}