<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Javascript Edition</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<script language="javascript">
function getAmount(monkeyCount, lastCount) {
var eachCount;
var flag;
if (monkeyCount == 1) {
eachCount = lastCount;
} else {
do {
eachCount = getAmount(monkeyCount-1, lastCount)/4;
if ((eachCount-Math.floor(eachCount)) != 0) {
lastCount++;
flag = true;
} else {
flag = false;
}
} while (flag == true);
}
return eachCount*5+1;
}
alert("共有"+getAmount(5, 1)+"只桃子.");
</script>
</body>
</html>
output:
共有3121只桃子.
THANK Q
本来还想写JAVA,C++,C#,VBScript版的...才发现啥都没装... 帮楼上加分了. 厉害。光是一个C语言版的就写了我三十分钟...... 学到也!!! 其实我的代码是可以优化的.lastcount这个参数作为一个指针传入的话可以减少递归的次数.
例如,
在递归倒数第2层得到eachcount为a值不能被倒数第一层返回的tempcount整除时,lastcount++, 重新递归, 直到eachcount被上一层返回的tempcount整除,假设已经是lastcount+50的情况了,接着返回到倒数第3层时, 可能会发现, eachcount不能被倒数第2层返回的tempcount整除, 于是lastcount++, 注意到, 这里面lastcount是重新递归的, 其又得进行lastcount到lastcount+50这段递归过程, 而实际上这段在前面已经递归过证实了是不可行的, 所以, lastcount作为指针传入, 递归的临时结果得以保存, 独立于递归函数之外, 我们在前面计算的lastcount的功夫就不会被白费掉. 学习……学习…… 我今天运行结果竟然只有四只桃子,会不会是溢出了
天亮了,又要开工了
厉害呀!不错![ 本帖最后由 jackey_sky 于 2006-4-19 23:07 编辑 ]
页:
1
[2]