唐钰小宝w 2021-06-29 21:03 采纳率: 0%
浏览 19

Java面试题(1-9999999)

  1. 编写一个程序,由键盘输入n的值,求s=1+(1+4)+(1+4+7)+...+(1+4+7+...+n)的值

(透过现象看本质)分析与求3!+5!+7!+9!相同

1+4--s=s+4

1+4+7----s=s+7

1+4+7+10-----s=s+10

假设:

int s=0;//最终结果

int r=0;//保存每个括号里面的和

for(int i=1;i<=n;i+=3){

         r+=i;

         s+=r;

}

n=12,11

if((n-1)%3!=0){

         s += r+n;

}           

如n=4、n=7;n=12

         i        r        s       n

         1       0       0               

                   1       1

         4       5       6

         7       12     18

         11     23     41

代码如下:

public static void main(String[] args){

      Scanner s = new Scanner(System.in);

      System.out.println("请输入数值n");

      int n = s.nextInt();

      int s=0;

      int sum = 0;

      for(int i=1;i<=n;i+=3){

         sum +=i;

         s+=sum;

      }

      if((n-1)%3!=0){

         s = s+sum+n;

      }

      System.out.println(s);

   }

  • 写回答

1条回答 默认 最新

  • 攸攸太上 2024-09-17 07:24
    关注

    1、如果用double存储最终的值更不容易出错
    2、我的思路是将 n - 1 / 3 的值算出来,作为次数
    然后在根据次数设置双层循环
    3、双层循环

    for(int i = 0; i < 次数; i++){
          for(int j = 0; j <= i; j++){
                sum += j * 3 + 1;
          }
          s += sum;
          sum = 0;
    }
    

    4、如上代码更符合我个人的逻辑

    评论 编辑记录

报告相同问题?

悬赏问题

  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥50 有偿!centos curl port设置问题
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView
  • ¥15 如何使用shufflenet进行手写数字识别
  • ¥20 微信小程序播放直播流
  • ¥15 关于迷宫自走单片机循迹小车的知识
  • ¥15 python使用selenium工具爬取网站的问题
  • ¥15 visual studio中c语言用ODBC链接SQL SERVER