2016/7/9重学了一波递归和递推

来源:互联网 发布:php程序员职业规划面试 编辑:程序博客网 时间:2024/05/31 19:19
#include <iostream>#include <cstdio>using namespace std;/**猴子吃桃问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?*///我的:(10~1)//递归int fun(int d){    if (d == 10)    {        return 1;    }    return 2*(fun(d+1) + 1);}int main(){    int d;    scanf("%d", &d);    printf("%d\n", fun(d)/2+1);    return 0;}//非递归int main(){    int a[15];    a[10] = 1;    for (int i=10; i>=1; i--)    {        a[i-1] = (a[i] + 1) * 2;    }    printf("%d\n", a[0]/2-1);    return 0;}//人家的:(1~10)//递归int fun(int n){    cout << "f(" << n << ")压栈" << endl;    if (n == 1)    {        cout << "此时函数达到最大深度" << endl; // [这里]函数栈最大深度为o(n);        cout << "f(" << n << ")弹栈" << endl;        return 1;    }    int a = fun(n-1)*2+2;    cout << "f(" << n << ")弹栈" << endl;    return a;}int main(){    int n = 10;    cout << fun(n) << endl;    return 0;}//非递归int main(){    int a = 1;    for (i=1; i<=10; i--)    {        a = (a + 1) * 2;    }    printf("%d\n", a);    return 0;}/*空间复杂度Space(N):Space(N) = Heap(N) + Stack(N);忽略低次项、系数之后,也记作o(N);Heap(N)表示额外申请堆内存空间的大小,Stack(N)表示函数栈的最大深度;当Stack(N)很大的时候慎用递归,当Stack(N)增长率很快(超过NlogN)的时候,慎用递归!*/

0 0
原创粉丝点击