编程论坛's Archiver

clqngw 发表于 2008-5-12 21:20

自我感觉方法没什么错误 可事实就是错了 忘高手指点

题目是:求Fibonacci数列的第i项值
数列:0,1,1,2,3,5,8,13,21.......
下面是我自己觉得能解决这个问题的算法    但运行结果都是0,麻烦高手指点一下,思路上哪里出了毛病,谢谢   呵呵

#include<stdio.h>
long fibonacci(int n)
{
        int i;
        if(n==0||n==1)
                i=n;
        else
                i=fibonacci(n-1)+fibonacci(n-2);
        return i;
}
main()
{
        int x=0;
        long f;
        f=fibonacci(x);
        scanf("%d",&x);
        printf("fabonacci(%d)=%d\n",x,f);
}

StarWing83 发表于 2008-5-12 22:21

当然是0啦,意料中的结果……

StarWing83 发表于 2008-5-12 22:22

你自己看看是什么时候对x赋值的,又是什么时候调用函数的………………

jiang5495 发表于 2008-5-12 22:32

have a try

#include<stdio.h>
long fibonacci(int n)
{
    int i;
    if(n==0||n==1)
        i=n;
    else
        i=fibonacci(n-1)+fibonacci(n-2);
    return i;
}
main()
{
    int x=0;
    long f;
        scanf("%d",&x);
        f=fibonacci(x);
        printf("fabonacci(%d)=%d\n",x,f);
}


这样可以了,先输入X,再调用函数!

clqngw 发表于 2008-5-13 09:38

回复 5# 的帖子

谢谢了    问题搞明白了   就是调用函数和输入x得顺序问题   谢谢了   呵呵

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.