递归(Recursion)

xiaoxiao2021-02-27  1.1K+

实例目录

阶乘 阶乘求和 Fibonacci Sequence

思想

写出一个递归的程序,只需要把握两个关键点: 1)基础项 (base equation) 也是递归结束的终止条件 2)通项 (general equation)

递归 v.s. 迭代

迭代是循环;而递归不含循环迭代不用栈;递归需要调用栈迭代规模的方向:由小到大;而递归:由大到小

实例:

e.g.1 阶乘

#include <iostream> using namespace std; int main() { int fact(int a); int num; cout<<"input the order the item"<<endl; cin>>num; cout<<fact(num); return 0; } int fact(int a) { int f; if (a==1) f=1; //基础项 else f=fact(a-1)*a;//通项 return f; }

e.g.2 阶乘求和

#include <iostream> using namespace std; int main() { int fact(int a); int num,s=0; cout<<"input the order the item"<<endl; cin>>num; for (int i=1;i<=num;i++) s=s+fact(i); cout<<s; return 0; } int fact(int a) { int f; if (a==1) f=1;//基础项 else f=fact(a-1)*a;//通项 return f; }

e.g.3 Fibonacci Sequence

#include <iostream> using namespace std; int main() { int fibonacci(int a); int num,s=0; cout<<"input the order the item"<<endl; cin>>num; cout<<fibonacci(num); return 0; } int fibonacci(int a) { int f; if (a==1) f=1; else if (a==2) f=1; //基础项 else f=fibonacci(a-1)+fibonacci(a-2);//通项 return f; }
转载请注明原文地址: https://www.6miu.com/read-18.html

最新回复(0)