题目: 求1+2+...+n,要求不使用乘除发、for、while、if、else、switch、case、等关键字以及条件判断语句(A?B:C)

#include <iostream>
using namespace std;

int add_(int a,int b){
    return 0;
}

int Add(int i,bool is=false){
    static int num=0;

    ( is==false &&[]{
        num=0;
        return true;
    }());

    num+=i;

    ( i>0 &&[i]{
        Add(i-1,true);
        return true;
    }());

    return num;
}

int main(){

    int i; cin>>i;
    cout<<Add(i)<<endl;

    return 0;
}

  

时间: 2024-10-22 06:26:39

题目: 求1+2+...+n,要求不使用乘除发、for、while、if、else、switch、case、等关键字以及条件判断语句(A?B:C)的相关文章

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)

题目:求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制.但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度. 通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路.由于已经明确限制for和while的使用,循环已经不能再用了.同样,递归函数也需要用if语句或者条件判断语句来判断是继续

求 1+2+...+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。

求 1+2+...+n,要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). #include <bits/stdc++.h> using namespace std; int Sum(int n) { int Ret = 0; n == 0 || (Ret = Sum(n-1)); return n + Ret; } class A{ public: A() { sum += ++n; } static int sum;

46、求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

思路:循环或者递归都有个结束条件和执行条件.用&&短路与代替. //短路与&&:就是只有前一个条件满足才可以去判断第二个条件. //递归的出口就是n=0时,当n>0是每次都会执行&&之后的表达式sum += Sum_Solution(n-1): public class Solution { static int sum = 0; public int Sum_Solution(int n) { //短路与&&:就是只有前一个条件满足才

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

代码如下: public int Sum_Solution(int n) { int temp = n; boolean b = (temp>0)&&(temp += Sum_Solution(n-1))>0; return temp; }

求1+2+3+...+n的值,要求不能使用乘除法,for、while、if、else、switch、case、等关键字及条件判断语句(JAVA)

采用递归和三目表达式注意红色字体一定不能写成n-- 1 package com.hunag; 2 3 public class Sum { 4 5 static int sum; 6 public static int isum(int n) 7 { 8 sum+=n; 9 sum=n==0?sum:isum(--n); 10 System.out.println(n); 11 return sum; 12 } 13 public static void main(String[] args)

【C语言】不使用循环和判断语句,求出1-100之间所有数的和

//不使用循环和判断语句,求出1-100之间所有数的和 #include <stdio.h> int fun(int n, int *sum) { *sum = *sum + n; (n--) && (fun(n, sum)); return n; } int main() { int n = 100; int sum = 0; fun(n, &sum); printf("%d\n", sum); return 0; } <img src=&q

LeetCode题目----求中位数---标签:Array

题目难度---困难 题目要求: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 思路:第一眼看到题目两个数组求中位数,看似很复杂,但是仔细一想,两个数组合在一块不久行了?然后合并后的数组给他排序,进而判断是奇数位数组还是偶数位数组 ok!代码奉上: public static double findMedianSortedArrays(int[] nums1, int[] nums2) {

不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数

以下五种方法分别求出较大的数和较小的数的方法.较小数的代码在注释中,但未运行测试. int Find1(int a, int b) { return ((a + b) + abs(a - b)) / 2; //return ((a + b) - abs(a - b)) / 2; } /* 当a大于b时,a-b为正,右移sizeof(int) * 8 - 1后,最右侧一位为0,0^1 = 0: 当a小于b时,a-b为负,右移后最右侧一位为1,1^1 = 1 */ int Find21(int a,

编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。

本题要求不能使用if, while, switch, for, ?: 以 及任何的比较语句,也就是要求我们不能用常规的方法来判断两个数的大小. 那么按照以往的方法,要判断两个数的大小,应该要将两个数进行减法运算,将结果与0进行比较.那现在不行进行比较,我们应该怎么办? 我们知道变量分为signed 和 unsigned 两种,有符号变量用最高位代表符号位. 当变量值为负数时,变量值的最高位为1, 当变量值为正数时,最高位为0 基于这种特性,我们可以用一个数组保存用于比较的两个数的值.如array