<h2>Fibonacci</h2>
<form method="$_GET" action="Wk4.php">
<fieldset>
<label for="Number">Fibonacci: </label>
<input type="text" name="Number" value="<?php echo $_GET['powerof']; ?>"/>
<input type="submit" name='Go' value="Calculate" />
</fieldset>
</form>
<?php
$message = 'The fibonacci sequence is: <br />1<br />2<br />';
$powerof = 0;
$max = 10;
$temp = $max;
if(isset($_GET['Go'])) {
$powerof = $_GET['Go'];}else{$powerof = 2;
}
if($powerof > 100) {
$powerof = 100;
$message = 'Sorry, your input was too high. I converted it to the maximum value of 100.<br />The fibonacci sequence is: <br />1<br />2<br />';
}
$i = 1;
for($i;$i<$powerof;$i++){
$max = $max * $temp;
}
$x = 1;
$y = 2;
$z = $x + $y;
echo($message);
while($z < $max) {
$z = $x + $y;
echo($z."<br />");
$x = $y;
$y = $z;
}
?>
我试图创建一种机制,允许我在文本框中输入一个整数,然后一旦我点击按钮就会返回,列出所有斐波那契序列的数量。
答案 0 :(得分:0)
现在很确定我的评论应该是一个答案,所以现在就是这样。这里有几个问题:
1)$_GET
不是有效的HTTP动词。表单的method属性的有效值 * 是get
,post
,put
,delete
和'dialog'
之一(HTML5 +)(所有不区分大小写)。
method
属性的默认值为空get
属性method
以及提供无效值时的默认值,因此保留原样可能仍然有效,但它并不是标准的,浏览器在看到可能不符合您预期的情况时会如何表现。 2)我相信你的主要问题是你在表单提交后如何检索输入。您在此行中将输入命名为powerof
:
<input type="text" name="powerof" value="<?php echo $_GET['powerof']; ?>"/>
因此你应该改变这个:
if(isset($_GET['Go'])) {
$powerof = $_GET['Go'];}else{$powerof = 2;
}
对此:
if(isset($_GET['powerof'])) {
$powerof = $_GET['powerof'];}else{$powerof = 2;
}
<强>更新强>
从您的评论中,我认为您没有正确回答面试的问题。此外,如果用户输入1或2,您将不会返回正确的值。 (斐波纳契序列从1,1,2,3,5,8 ** 开始,......,因此2的输入应返回1)。
尝试将while循环更改为:
$x = 0;
$y = 1;
$z = 0;
$counter = 0;
while($counter < $powerof) {
if($counter <= 1) {
$z = 1;
} else {
$z = $x + $y;
}
$x = $y;
$y = $z;
$counter++;
}
echo 'Ouput: ' . $z . "<br>";
*根据this,只有get
和post
在HTML v4中标准化,但今天所有其他浏览器都支持所有其他浏览器。感兴趣的读者可能会发现有关此问题的HTML v5标准的bug submission ..有趣。此外,根据HTML5 standard,还支持值'dialog'
。
**根据Wikipedia,序列没有“标准”起点(应该将0视为斐波那契数字吗?)。根据{{3}},使用0作为起点被称为“经典”定义,但使用1作为起点被称为“组合”定义。如果你提出这个问题,你可能会在面试中获得奖励积分。