-
逆序打印字符串
void printReverseString(const char* str){ if(*str == '\0'){ return; } printReverseString(str + 1); printf("%c", *str); } int main() { const char* str = "Hello World"; printReverseString(str); // dlroW olleH return 0; }
-
逆序输出链表
struct LinkNode{ int data; struct LinkNode* next; }; void printReverseLinkNode(struct LinkNode* header){ if(header == NULL){ return; } printReverseLinkNode(header->next); printf("%d\n", header->data); } int main() { struct LinkNode* header = malloc(sizeof(struct LinkNode)); struct LinkNode* node1 = malloc(sizeof(struct LinkNode)); node1->data = 10; node1->next = NULL; struct LinkNode* node2 = malloc(sizeof(struct LinkNode)); node2->data = 20; node2->next = NULL; struct LinkNode* node3 = malloc(sizeof(struct LinkNode)); node3->data = 30; node3->next = NULL; header->next = node1; node1->next = node2; node2->next = node3; printReverseLinkNode(header->next); return 0; }
-
递归实现给出一个数 8793,依次打印千位数 8、百位数 7、十位数 9、个位数 3
void printNum(int num){ if(num == 0){ return; } int val = num / 10; printNum(val); printf("%d ", num % 10); } int main() { int num = 8973; printNum(num); // 8 9 7 3 return 0; }
-
阶乘
int factorial(int n){ if(n <= 1){ return 1; } else{ return n * factorial(n-1); } }
-
斐波那契数列
int fibonacci(int n){ if(n == 0) return 0; if(n == 1) return 1; return fibonacci(n-1) + fibonacci(n-2); }
-
河内塔(递归树的中序遍历)
void move(char X, char Y){ cout << "move " << X << " to " << Y << endl; } void hanoi(int n, char X, char Y, char Z){ if(n <= 1){ move (X, Z); } else{ hanoi(n-1, X, Z, Y); // X 上最大的环不动,其他 n-1 个环移动到 Y move(X, Z); // 移动最大的环到 Z,放好 hanoi(n-1, Y, X, Z); // 把 Y 上的 n-1 个环移动到 Z } }