代码改变世界

随笔档案-2011年8月22日

Fibonacci数列计算的三种方法

2011-08-22 21:38 by Daniel Zheng, 2766 阅读, 收藏,
摘要: 以下分别用递归,迭代,动态规划求解Fibonacci数列: 1 #include <iostream> 2 #include <ctime> 3 using namespace std; 4 5 int Fibonacci_R(int n) 6 { 7 if((n == 1)||(n == 2)) 8 return 1; 9 else10 return Fibonacci_R(n-1) + Fibonacci_R(n-2);11 }12 13 int Fibonacci_I(int n)14 {15 int A = 1; 16 ... 阅读全文

堆内存和栈内存详解[转]

2011-08-22 16:21 by Daniel Zheng, 699 阅读, 收藏,
摘要: 堆:顺序随意栈:先进后出堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放4、文字常量 阅读全文

深入理解递归函数的调用过程[转]

2011-08-22 14:36 by Daniel Zheng, 8660 阅读, 收藏,
摘要: 下面是个关于递归调用简单但是很能说明问题的例子:/*递归例子*/ 1 #include<stdio.h> 2 void up_and_down(int); 3 int main(void) 4 { 5 up_and_down(1); 6 return 0; 7 } 8 void up_and_down(int n) 9 {10 printf("Level %d:n location %p\n",n,&n); /* 1 */11 if(n<4)12 up_and_down(n+1);13 printf("Level %d:n locatio 阅读全文

带头结点的单链表反转

2011-08-22 14:33 by Daniel Zheng, 516 阅读, 收藏,
摘要: 1 #include <iostream> 2 using namespace std; 3 4 struct Node 5 { 6 public: 7 int data; 8 Node * pNode; 9 };10 11 12 void CreateList(Node * Header)13 {14 cout<<"Input the node data and end by 0"<<endl;15 int input;16 int count = 0;17 Node * oHeader = Header;18 while(cin> 阅读全文