-3

我一直在准备竞争性考试,我遇到了这个问题。我尝试为它编写代码。但是根据给出的选项我没有得到答案。我得到的输出是超时。请帮我找到正确的答案

对于输入 x = 95,以下函数将返回什么值?

 Function fun (x:integer):integer;
 Begin
 If x > 100 then fun : x – 10
 Else fun : fun(fun (x + 11))
 End;

选项是 (a) 89 (b) 90 (c) 91 (d) 92

4

3 回答 3

3

我用 JAVA 做了这个:

 public static int test(int x){

     if (x > 100){
         return x-10;
     }// then fun : x – 10
     else {
         return test(test(x+11));
     }//fun : fun(fun (x + 11))
     }

 System.out.println(test(95));

结果是:

91

.

于 2013-01-07T12:50:24.860 回答
2

相当于你的 C++ 程序

#include <cstdio>

int fun(int x)
{
    if (x > 100)
    {
        return x-10;
    }
    else
    {
        return fun(fun(x+11));
    }
}

int main()
{
    printf("%i", fun(95));
    return 0;
}

输出:

91

尽管您可以很容易地在“如果 x > 100 然后返回 x-10”这一行找到答案。如果你输入任何低于 100 的数字,它总是会输出 91。如果你将它更改为“如果 x >= 100 然后返回 x-10”,并且你输入任何低于 100 的数字,它总是会返回 90。

于 2013-01-07T13:05:22.967 回答
0

我用以下代码在 python 中运行了你的答案,答案是 91:

    def fun(x):
        if(x >100):
            return x-10
        else:
            return fun(fun(x+11))

    print (fun(95))
于 2015-12-06T06:40:16.650 回答