查看: 267|回复: 0

[Java学习] 不使用循环和条件语句如何求1+2+…+n的值?

发表于 7 天前
问:在进行程序设计时,如果要求类似1+2+…+n的值,通常是使用for、while、if、else、switch、case等关键字以及条件判断语句来实现,但是本题要求不能使用这些关键字。该如何计算1+2+…+n的值呢?
答:本题的要求限制了所有循环语句和条件判断语句,但是唯独没有限制三元运算符(?:),所以可以从这个运算符着手,并利用递归实现循环,从而完成计算1+2+…+n值的功能。实现代码如下:
  1. package com.mingrisoft;
  2. public class Swap {
  3.     static int sum;
  4.     public static int iSum(int n) {
  5.         sum += n;                                        // 进行累加求和
  6.         sum = n == 0 ? sum : iSum(--n);         // 进行递归调用
  7.         return sum;                                        // 返回计算结果
  8.     }
  9.     public static void main(String[] args) {
  10.         int n = 100;                                        // 定义并初始化变量
  11.         int tSum = iSum(n);                         // 计算连续整数的和
  12.         System.out.println("1至"+n+"连续整数的和如下:");
  13.         System.out.println("1+2+…" + "+" + n + " = " + tSum);
  14.     }
  15. }
复制代码
运行程序,将在控制台输出1~100连续整数的和,效果如图1所示。
专家点评
本题考查读者对基础知识掌握的熟练程度,以及对知识的综合应用能力。由于本题限制了循环语句的使用,所以应该想到递归可以实现循环的功能,因此可以考虑用递归实现计算1+2+…+n的值。



回复

使用道具 举报