UVA 10518 How Many Calls?

大意略。

思路:通过递归程序将递归的层数打印出来,然后去找规律即可。

可得f(n) = 2*fib(n) - 1;贴下递归程序代码。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>
#include <stack>
using namespace std;


int f(int n, int &count)
{
	count++;
	if(n == 0) return 0;
	if(n == 1) return 1;
	return f(n-1, count) + f(n-2, count);
}

int main()
{
	int n;
	while(~scanf("%d", &n) && n)
	{
		for(int i = 1; i <= n; i++)
		{
			int count = 0;
			f(i, count);
			printf("%d\n", count);
		}
	}
	return 0;
}


你可能感兴趣的:(UVA 10518 How Many Calls?)