我试图在python中递归写一个Fibonacci数函数

时间:2016-02-23 20:17:21

标签: python

我想将整个列表打印到函数

给出的元素

如[1,1,2,3,5,8]

def Fib(a):
    b=[ ]
    if a==0:
        b.append(1)
    elif a==1:
        b.append(1)
    else:
        b.append(Fib(a-1)+Fib(a-2))
    print(b)

Fib(6)

我收到“+不支持的操作数类型”的错误:'NoneType'和'NoneType'“ 在此先感谢,所有的帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

可以制造发电机

def fibGen(n, a=1, b=1):
    while n > 0:
        yield a
        a, b, n = b, a+b, n-1

运行它

>>> [i for i in fibGen(6)]
[1, 1, 2, 3, 5, 8]

答案 1 :(得分:0)

该函数需要一个return语句。 此外, 在每个条件语句之后,应该存在一个return语句

If n ==0:
     return 0
Elif n ==1: 
    return 1
Else: 
    return fib(n-1) + fib(n-2)

答案 2 :(得分:0)

#include<dirent.h>
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int main(void)
{
  DIR           *d;
  struct dirent *dir;
  char folder_address[100];
  strcpy(folder_address,"c://myproject/task1");
  d = opendir(folder_address);
  if (d)
  {
   while ((dir = readdir(d)) != NULL)
   {
    if(strcmp(dir->d_name,".")==0 || strcmp(dir->d_name,"..")==0 )
        {continue;}

    ifstream myReadFile;
    char fname[200];
    strcpy(fname, folder_address);
    strcat(fname, "/");
    strcat(fname, dir->d_name);
    myReadFile.open(fname);
    char output;
    if (myReadFile.is_open())
    {
     while (1)
     {
      myReadFile >> output;
      if(myReadFile.eof())
       break;
      cout<<output<<endl;
     }
    }
        myReadFile.close();
   }
   closedir(d);
  }
  return(0);
}

输出:

result = {}
def fibo(n):
    if n ==0 :
        result[n] = 0
        return 0
    elif n == 1:
        result[n] = 1
        return 1
    else:
        val = fibo(n-1) + fibo(n-2)
        result[n] = val
        return (val)

fibo(10)
print(result.values())