1. 程式人生 > >用遞迴和普通for迴圈分別求 1+2+3+...+n

用遞迴和普通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---471+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