C++的遞迴
我不是科班出身的,所以很多觀念都是在工作時自己看書學來的
今天紀錄一下遞迴的慨念
我一直搞不清楚遞迴,不過現在有點懂了,遞迴就是將程式拆解成上一層的延伸
也就是說 f(x) = f(n)*f(x-1)
要知道f(x),就必須要知道f(x-1),要知道f(x-1),就必須要知道f(x-2)......
電腦會自動遞回到達f(0),而 f(0) 是有個基本值的, 然後再反算回去......
我以前搞不懂甚麼時候要用遞迴,甚麼時候不用
現在理解了,那必須函數本身擁有遞迴的性質才行(也就是 一個函數要參考前一個函數)
不是說想遞迴就可以遞迴的,另外,遞迴的效率很差,所以實際上不用學懂應該沒關係
像費波那契數列就是遞迴性質的, f(x)=f(x-1)+f(x-2)
以下就紀錄一下方法
void main(void){
int step=0;
cout << "Fibonacci creator !" << endl;
cout << "please input the step you want to show :";
cin >> step;
cout << "Fibonacci of " << step <<" is "<<
}
int Fibonacci(int step){
if (step <=2){ return 1;}
return Fibonacci(step-1)+Fibonacci(step-2);
}
今天紀錄一下遞迴的慨念
我一直搞不清楚遞迴,不過現在有點懂了,遞迴就是將程式拆解成上一層的延伸
也就是說 f(x) = f(n)*f(x-1)
要知道f(x),就必須要知道f(x-1),要知道f(x-1),就必須要知道f(x-2)......
電腦會自動遞回到達f(0),而 f(0) 是有個基本值的, 然後再反算回去......
我以前搞不懂甚麼時候要用遞迴,甚麼時候不用
現在理解了,那必須函數本身擁有遞迴的性質才行(也就是 一個函數要參考前一個函數)
不是說想遞迴就可以遞迴的,另外,遞迴的效率很差,所以實際上不用學懂應該沒關係
像費波那契數列就是遞迴性質的, f(x)=f(x-1)+f(x-2)
以下就紀錄一下方法
void main(void){
int step=0;
cout << "Fibonacci creator !" << endl;
cout << "please input the step you want to show :";
cin >> step;
cout << "Fibonacci of " << step <<" is "<
}
int Fibonacci(int step){
if (step <=2){ return 1;}
return Fibonacci(step-1)+Fibonacci(step-2);
}
留言