遞迴演算法的程式碼
阿新 • • 發佈:2018-12-12
1.最近在面試的時候遇到一題簡單的遞迴題: a0=1 ,a1=1,a2=2,a3=3; an=a(n-1) + a(n-2)的程式碼。
程式碼如下:
#include<stdio.h> int main (void) { int temp_1 = 1; int temp_2 = 1; int i, temp; int n =30 ; if (n == 0 || n == 1) { temp_2 = 1; } else { for (i=2;i<=n;i++) { temp = temp_1; temp_1 = temp_2; temp_2 = temp + temp_2; } printf("第a%d = %d\n", n, temp_2); } return 0; }
以上的程式碼應該還有可修改之處,可以更加優化,但是這個可以不用遞迴的方式完成而達到目的。但是我們可以看到剛剛的程式碼定義了
許多的變數,這樣可能會影響能存空間的分配,下面是用C++完成:
public class Test { public static void main(String[] args) { System.out.println(recursive(30)); } public static int recursive(int i) { // int a0=1; // int a1=1; // int a2=a1+a0; // int a3=a2+a1; if (i==0 || i==1) return 1; return recursive(--i) + recursive(--i); } }