1.函數f(n), n>=0:
f(0)=0
f(1)=1
f(2)=3
f(3)=6
...
可得:
f(0)=0
f(1)=1
f(2)=f(1)+2=3
f(3)=f(2)+3=6

2.費氏函數
F(n)=n, if n<=1;
F(n)=F(n-1)+F(n-2), otherwise


#include
void fn1(void);
void fab(void);

void main(void)
{
    fn1();
    fab();
    return;
}
void fn1(void)
{
    int n=0;
    printf("please input n: ");
    scanf("%d",&n);
    printf("for: f(%d)=%d,recursive: f(%d)=%d\n",n,fn1for(n),n,fn1r(n));
    return;
}
int fn1r(int n)
{
    if(n<=0)
        return 0;
    else if(n==1)
        return 1;
    else
        return fn1r(n-1)+n;
}
int fn1for(int n)
{
    int fn=0;
    int i;
    
    for(i=1; i<=n; i++)
    {
        fn=fn+i;
    }
    
    return fn;
}
void fab(void)
{
    int n=0;
    printf("please input n: ");
    scanf("%d",&n);
    printf("for: f(%d)=%d,recursive: f(%d)=%d\n",n,fabfor(n),n,fabr(n));
    return;
}
int fabr(int n)
{
    if(n<=1)
        return n;
    else
        return fabr(n-1)+fabr(n-2);
}
int fabfor(int n)
{
    int f1=0,f2=0,fn=0,i;
    for(i=0; i<=n; i++)
    {
        if(i<=1)
            fn=i;
        else
            fn=f1+f2;
        
        f2=f1;
        f1=fn;
        /*printf("f1=%d,f2=%d,f(%d)=%d\n",f1,f2,i,fn);*/
    }
    return fn;
}

arrow
arrow
    全站熱搜

    伊 發表在 痞客邦 留言(0) 人氣()