ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
``` // 带记忆的递归:Fibonacci210802.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。// #include <iostream> #define Max1 1000001 int FaA[Max1]; //unsigned long long tmpn_1; int tmpn_1; int tmpn_2; //unsigned long long tmpn_2; //unsigned long long int Fibonacci(int n) { if (0 == n) return 0; if(2>n) return 1;// if (1 == n) return 1; // if (2 == n) return 1; // if (-1 != FaA[(n-1)]) { tmpn_1 = FaA[n - 1]; } else if (-1==FaA[n-1]) tmpn_1 = Fibonacci((n-1)); // 后面的语句是等价代码: tmpn_1 = (-1 == FaA[n - 1]) ? Fibonacci(n - 1) : FaA[n - 1]; //此句为前面代码的等价语句, //只不过此为 “三目”写法 tmpn_2 = (-1 == FaA[n - 2]) ? Fibonacci(n - 2) : FaA[n - 2]; // if (-1 != FaA[(n - 2) ]) { tmpn_2 = FaA[n - 2]; } else if (-1==FaA[n-2]) tmpn_2 = Fibonacci((n - 2) ); FaA[n] = tmpn_1 + tmpn_2; return ( FaA[n] ); }// int main() { int nn = 9; for (int i = 0; i < Max1; ++i) { FaA[i] = -1; } FaA[0] = 0; FaA[1] = 1; //unsigned long long int tmpull = Fibonacci(nn); for(int ii=0;ii<=nn;++ii ) {//for220i std::cout << "当N为:" << ii << "Fibonacci数为:"; std::cout << FaA[ii] << std::endl; }//for220i std::cout << "当N为:" << nn <<"Fibonacci数为:"; std::cout << tmpull << std::endl; std::cout << "Hello World!\n"; }//main ``` (程序的)**代码 都是写给 人类看的……,只不过是刚好计算机可以执行而已。**So,写代码既是技术活儿,也是艺术创作…… 前面程序的运行结果: 当N为:0Fibonacci数为:0 当N为:1Fibonacci数为:1 当N为:2Fibonacci数为:1 当N为:3Fibonacci数为:2 当N为:4Fibonacci数为:3 当N为:5Fibonacci数为:5 当N为:6Fibonacci数为:8 当N为:7Fibonacci数为:13 当N为:8Fibonacci数为:21 当N为:9Fibonacci数为:34 当N为:9Fibonacci数为:34 ![](https://img.kancloud.cn/57/25/5725a3c8a79574a966109f07f4e2601d_879x624.webp) 上图的,红份色部分的算法就可以称为“对付法”、对付算法…… 因为算法复杂度实在太高!