首页 > 试题广场 >

求fun(484)的返回值。

[单选题]
求fun(484)的返回值()
bool fun(int n){
     int sum = 0;
     for(int i = 1;n > sum;i = i + 2)
         sum = sum + i;
     return (n == sum);
}
  • True
  • False
推荐
loop 1:sum=1, i=3
loop 2:sum=4, i=5
loop 3:sum=9, i=7
loop 4:sum=16,i=9
loop 5:sum=25,i=11
loop 6:sum=36,i=13
loop 7:sum=49,i=15
...
通过规律可以发现sum的值为循环次数的平方,22*22=484,循环退出时sum=484,函数返回true。

选A
编辑于 2015-01-31 11:27:43 回复(1)
前n项奇数和=n^2
发表于 2015-05-06 09:40:46 回复(3)
答案:A
Sum的值等于1+3+5+...+k=(k+1)^2/4且k为奇数
(k+1)^2/4 >= n时循环结束。N=484,所以(k+1)^2 >=1936
如果存在奇数k使得等会成立,则函数返回true,否则返回false
正好k=43时,等号成立。因此返回true
发表于 2015-01-28 16:59:14 回复(4)
推荐的答案感觉不好,可以发现sum是求一个首项为1,公差为2的等差数列前n项和,那么根据高中所学的数学知识,前n项和
Sn = na1 + n(n - 1)d / 2,代入首项a1和公差d可得Sn = n*n,即n的平方。而484是22的平方,所以循环退出时sum = 484,函数返回TRUE。
发表于 2018-11-29 16:30:42 回复(1)
就是一个等差数列求和,我们设一共有n项求和得484,根据等差数列求和公式   
首项为1,尾项为2(n-1)+1
于是   (1+2(n-1)+1)/2*n=484,有解则为true,无解则为false 。这道题n=22,有解。固为true
发表于 2016-09-05 15:40:50 回复(0)
根据程序可以得到以下关系:
i=1     sum=1;
i=3     sum=4;
i=5     sum=9;
i=7     sum=16;
...........
sum分别是等于1的平方、2的平方、3 的平方、4 的平方..........................
484=22的平方;
而sum是可以取到484的。
所以最后返回值为真。
发表于 2017-06-30 16:00:22 回复(0)

第一轮:i = 1,sum = 1;
第二轮:i = 3; sum = 1+3;
第三轮: i=5;sum = 1+3+5;
i= 2n-1,sn = n^2;

发表于 2021-01-16 11:08:49 回复(0)
  1. 由题意,sum = 1 + 3 + 5 + ....+ i = i2;
  2. 则只要判断:是否有正整数i,使得 i= n
  3. 由于当 i = 22 时,i2 = 484;
  4. 故返回true;
发表于 2020-02-29 11:19:27 回复(0)
可以用表达式  i是等差数列  sum等于i的和等差数列求和就得到 sum=i的平方;i=22;
发表于 2015-09-05 12:46:56 回复(0)
Sum的值等于1+3+5+...+k=(k+1)^2/4且k为奇数
(k+1)^2/4 >= n时循环结束。N=484,所以(k+1)^2 >=1936
如果存在奇数k使得等会成立,则函数返回true,否则返回false
正好k=43时,等号成立。因此返回true
发表于 2015-08-27 20:48:22 回复(0)
别想复杂了,只从做题的角度看,sum是从0开始每次递增2的,总会到达482,此时n=484>m=482所以继续循环,下一次n=484!>m=484,退出循环走ruturn,想等为true,完毕。
发表于 2023-02-02 22:21:12 回复(0)
等差数列求和 
发表于 2023-01-06 13:54:05 回复(0)
循环体中是计算前i项奇数和,即1+3+5+...+i=i^2,最终就是求是否存在i,使得i^2=484,开方得i=22
发表于 2015-08-23 08:59:54 回复(0)
此函数的作用是,判断n是否为平方数。

484是一个平方数,返回true
编辑于 2023-12-19 19:32:27 回复(0)
数学
发表于 2023-02-13 22:02:18 回复(0)
1+3+5+7+...=n2
发表于 2022-06-23 08:48:04 回复(0)
错在口算22平方算错了
发表于 2022-03-24 12:35:26 回复(0)
等差数列前n项和公式为:Sn=n(a1+an)/2=n*a1+n(n-1)d/2,nN*。由题意,sum=n*n=484,n=22,有解,返回true。
发表于 2022-02-14 23:59:34 回复(0)
由题可知为等差数列an=a1+(n-1)*d,求前n项和公式为Sn=n*a1+n*(n-1)*d/2=n^2得n为22
发表于 2021-03-28 23:16:19 回复(0)
我知道是个等差数列求和,但是不是要在n>sum才会退出循环吗?n==sum是进入循环最后加一次i,得出结果不应该是n>sum吗?
发表于 2020-09-23 11:28:50 回复(0)
(1+1+2n)(n+1)/2=484,解出来n有正整数解22,所以n==sum为ture
发表于 2020-09-08 00:25:11 回复(0)