递归论的基本内容有哪些呢?
任给m,n的值,如果m为0,可由第一式算出;如果m不为0而n为0,可由第二式化归为求g(m,1)的值,这时第一变目减少了;如果m,n均不为0,根据第三式可先计算g(m,n1),设为α,再计算g(m1,α),前者第二变目减少(第一变目不变),后者第一变目减少
请问什么是递归论呢?
原始递归函数所涉及的范围很广,在数论中所使用的数论函数全是原始递归函数
javascript 递归
人家叫用递归
function digui(n){
if(n==1) return 1;
else return n+digui(n-1);
以下是测试代码
function digui(n){
if(n==1) return 1;
else return n+digui(n-1);
var sum=digui(4);
document.write(sum);
在网页中的结果是10 没有问题function asum(n){
var res;
for(var i=1;i
res=res+i;
return res;
}<html>
<head>
<title>javascript递归</title>
<script language=javascript>
var testCase = {
sum: 0,
run: function(n) {
if(n==1){
return 1;
}
else {
sum=parseInt(n)+testCase.run(n-1);
return sum;
}
}
};
function test(){
var ff=testCase.run(document.getElementById(num).value);
alert(ff)
}
</script>
</head>
<body>
<input type=textfield id=num />
<input type=button value=test οnclick=test() />
</body>
</html>
复制粘贴代码
在文本框中输入值 点击test第一你算 运行几次 5 4 3 一共3次,为什么是334第一次5的的时候递归 传值是4//document.writeln(num1)未执行到
第2次 4的时候 递归传值3//document.writeln(num1)未执行到
第3次 这次3>3 为false执行document.writeln(num1) 得到3
往回走 由于是--n所以就在地2次的时候实际在断点递归的时候保存的是3 同理第一次是4,楼上的代码犯了小错误指出一下
i
javascript 递归函数
第一你算 运行几次 5 4 3 一共3次,为什么是334
第一次5的的时候递归 传值是4//document.writeln(num1)未执行到
第2次 4的时候 递归传值3//document.writeln(num1)未执行到
第3次 这次3>3 为false执行document.writeln(num1) 得到3
往回走 由于是--n所以就在地2次的时候实际在断点递归的时候保存的是3 同理第一次是4,abc(5)第一次执行函数时num1为4,执行abc(4),4大于3,num1为3执行abc(3),3不大于3,所以不执行if语句,打印出3,紧接着返回,返回到abc(4)之后的document,此时的num1为3,所以打印出3,接着返回执行abc(5)的document,打印出4,
整个过程的abc(5)之后num1变为4,接着abc(4)之后变为3,abc(3)之后没执行if语句,num1仍为3,一次返回打印出3 3 4因为递归是一层层请求下去,而数据是一层层返回上来:
第一百次:1
第九十九:2+1(第一百次返回的数据)
第九十八:3+(2+1)(第九十九次返回的数据)
第一次:100+4950(第二次返回的数据)
为什么true可以呢?
因为true会被隐性转换为1,而false会被隐性转换为0。
递归就相当于调用了100次那个sum函数,这是很耗内存资源的;
一般可以用循环体实现的就尽量用循环体来实现,如上题目就可以改为下面的方式实现:
function sum(n){
var total = 0;
total+=n;
}while(n--)
return total;
}function abc(num1){
if(num1>3){
abc(--num1);
}
document.writeln(num1);
看看推荐答案...document.writeln(num1);不在else里面document.writeln(num1);这句是一定会执行的