用遞迴和普通for迴圈分別求 1+2+3+...+n
最近在複習遞迴演算法時, 腦海突然想能否用剛剛學到的遞迴方法去解高斯問題呢?
然後自己動手用常規for迴圈和遞迴來程式設計, 看看二者有何不同, 最後的程式碼如下:
雖然有點簡單, 但是還是值得學習的!特別是遞迴的思想。
測試結果:package mi; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println("用遞迴方法: " + "1+2+3+...+" + n + " = " + sum1(n)); System.out.println("用非遞迴方法: " + "1+2+3+...+" + n + " = " + sum2(n)); //關閉sc sc.close(); } /** * 用遞迴求 1+2+3+...+n * @param n個數 * @return 總和 */ public static int sum1(int n){ if(n == 1){ return 1; } else { return n + sum1(n-1); } } /** * 用迴圈求 1+2+3+...+n * @param n * @return 總和 */ public static int sum2(int n){ int sum = 0; for(int i = 1; i <= n; i++){ sum += i; } return sum; } }
相關推薦
用遞迴和普通for迴圈分別求 1+2+3+...+n
最近在複習遞迴演算法時, 腦海突然想能否用剛剛學到的遞迴方法去解高斯問題呢? 然後自己動手用常規for迴圈和遞迴來程式設計, 看看二者有何不同, 最後的程式碼如下: 雖然有點簡單, 但是還是值得
【類和物件】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)
題目描述: 求1+2+3+...+n,要求不能使用乘除法(數學公式)、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C). 分析:這道題雖然常用的方式都給禁掉了,但是可以使用我們c++學過的類和物件,通過使用類和靜態來完成。常規情況下,從1+到n,
迴圈連結串列報數問題,n個人編號分別為1,2,3,……n,從第k個編號開始數1,2到m個然後刪除第m個人,然後下 一個人再從1開始數數到第m個,然後再刪除m人
#include<iostream> #include<stdio.h> using namespace std; //迴圈連結串列報數問題,n個人編號分別為1,2,3,……n,從第k個編號開始數1,2到m個然後刪除第m個人,然後下 //一個人再從1
46、求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
closed else while spl 判斷語句 stat 條件 執行 ret 思路:循環或者遞歸都有個結束條件和執行條件。用&&短路與代替。 //短路與&&;就是只有前一個條件滿足才可以去判斷第二個條件。 //遞歸的出口
劍指offer-求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)
題目如下: 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C) 本題考的知識點就兩點 && 運算子 false && true =>
題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
//求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字 //及條件判斷語句(A?B:C)。 public class Solution { public int Sum_Solution(int n) { //if
劍指offer---47求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 public class Solution { public int Sum_Solution(int n) { // if(
C++實現:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)
程式碼: class Solution { public: class Sum { public: Sum() { s_count++; s_sum += s_count;
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。Java實現
前幾天跟同學交流聽說一個比較有意思的oj題目,具體描述如下: 題目描述: 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 輸入: 輸入可能包含多個測試樣例。 對於每個測試案例,輸
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)(劍指offer)
今天在牛客網上遇到這樣一道題目,求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C) 一般大家在看到這種題目的時候是完全沒有頭緒的,但是我們可以從多方面進行思考,首先我們應該想
求1+2+3+...+n (不能使用條件語句和乘除法)(Java 劍指offer)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 public class number { //遞迴 //利用邏輯與的短路特性實現遞迴終止 //當n==0時,(n>
1133: 【C語言訓練】求1+2!+3!+...+N!的和
題目描述 求1+2!+3!+...+N!的和 輸入 正整數N(N〈=20) 輸出 1+2!+3!+...+N!的和 (結果為整數形式) 樣例輸入 3 樣例輸出 9 提示 這道題目,看提交和通過率
求第n個斐波那契數(分別用遞迴和非遞迴兩種方法求解)
斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55……這個數列從第3項開始,每一項都等於前兩項之和。 這裡分別用遞迴和非遞迴的方法實現: 遞迴 #define _CRT_SECURE_NO_WARNINGS 1 #include&l
3.1分別用遞迴和非遞迴方式實現二叉樹先序、中序和後序遍歷
題目 用遞迴和非遞迴方式,分別按照二叉樹先序、中序和後序列印所有的節點。 首先給出二叉樹節點結構定義: public class BinaryTreeNode { //二叉樹節點 private int data; private Bi
猴子吃桃問題,用遞迴和非遞迴方法
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。 public class Test{ &nb
二叉樹的前序,中序,後序遍歷。用遞迴和非遞迴實現
#include<iostream> #include<stack> using namespace std; #define MAX 100 typedef struct Tree{ int data; Tree*lchild; Tree*rchild; }
用遞迴和非遞迴實現斐波那契數列
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列
程式基本演算法習題解析 用遞迴函式求 s=1+2+3+...+n 的和。
附上程式碼: // Chapter6_2.cpp : Defines the entry point for the application. // 用遞迴函式求 s=1+2+3+...+n 的和 #include "stdafx.h" #include<iostream> usi
[C語言]用遞迴和非遞迴的方法在楊氏矩陣中查詢
從楊氏矩陣中查詢數字,以及調整奇數位於陣列的前半部分 //從楊氏矩陣中查詢數字 //1.從右上角開始找,如果要找的值大於當前值,向下找,否則,向左找,方向確定 //2.從左下角開始找,如果要找的值大於當前值,向右找,否則,向上找,方向確定 //---->最
lambda表示式foreach和普通for迴圈效能比較
java 8的新特性之一就是lambda表示式,其中lambda表示式的foreach迴圈最為引人注目,現比較下lambda表示式foreach和普通for迴圈的效能測試。程式碼如下: public static void main(String[] args){ List