凹凸的形式展示斐波那契数列递归计算的过程
即f(n)=f(n-1)+f(n-2)的递归调用过程
输入格式:
一共多行
一行一个整数n<10
输出格式
每输入一个数据,输出多行凹凸的调用情况,然后一个空行,接着处理下一个数据
输入样例:
3
4
输出样例:
计算f(3)
计算f(2)
结果f(2)=2
结果f(3)=3
计算f(4)
计算f(3)
计算f(2)
结果f(2)=2
结果f(3)=3
计算f(2)
结果f(2)=2
结果f(4)=5
结果说明:每凹进一层,4个空格,f(1)和f(0)不需计算
#include <iostream>
using namespace std;
int fib(int n){
if (n == 0 || n == 1){
return 1;
}
return fib(n - 1) + fib(n - 2);
}
void showFib(int n,int k){
for(int i=0;i<k;i++){
cout<<" ";
}
cout<<"计算f("<<n<<")"<<endl;
if(n>3){
showFib(n-1,k+1);
showFib(n-2,k+1);
}else if(n==3){
showFib(n-1,k+1);
}
for(int i=0;i<k;i++){
cout<<" ";
}
cout<<"结果f("<<n<<")="<<fib(n)<<endl;
}
int main() {
int n,k=0;
while (cin>>n) {
if(k>0)
cout<<endl;
showFib(n, 0);
k++;
}
}