Fibonacci数列的规律是:前2个数为1,从第3个数开始,每个数是它前2个数之和,即:1,1,2,3,5,8,13,21,34,55,89,…。某人编写了下面的函数,判断大于1的整数x是否是Fibonacci数列中的某个数,若是,则返回True,否则返

admin2016-01-22  5

问题 Fibonacci数列的规律是:前2个数为1,从第3个数开始,每个数是它前2个数之和,即:1,1,2,3,5,8,13,21,34,55,89,…。某人编写了下面的函数,判断大于1的整数x是否是Fibonacci数列中的某个数,若是,则返回True,否则返回False。
    Function Isfab(x As Integer)As Boolean
    Dim aAs Integer,bAs Integer,cAs Integer,flag As Boolean
    flag=False
    a=1:b=1
    Do Whlle x<b
    C=a+b:a=b:b=c
    Ifx=b Then flag=True
    Loop
    Isfab=flag
    End Function
    测试时发现对于所有正整数x,函数都返回False,程序需要修改。下面的修改方案中正确的是(    )。

选项 A、把a=b与b=c的位置互换
B、把c=a+b移到b=c之后
C、把Do While x<b改为Do While x>b
D、把Ifx=b Then flag=True改为Ifx=a Then flag=True

答案C

解析 在本题中通过分析题干中的程序可以看出,函数的返回值就是变量flag的值。错误现象是无论输入哪个正整数均会返回False,这就代表着没有执行循环,直接输出的就是变量flag的初值False。进一步分析可以看出,由于b的初值为1,而任何正整数均不会小于1,所以永远无法满足循环条件从而进入循环,因此需要将条件x<b改为:x>b。   
转载请注明原文地址:https://kaotiyun.com/show/1wLp777K
0

最新回复(0)