#include2. 编写函数不允许创建临时变量,求字符串的长度void print(unsigned int n) { if (n > 9) { print(n / 10); } printf("%d ", n % 10); } int main() { unsigned int num = 0; scanf("%u", &num); print(num); return 0; } //输入1234,输出1 2 3 4 //print(1234) //print(123) 4 //print(12) 3 4 //print(1) 2 3 4 //1 2 3 4
#include3. 求n的阶乘int my_strlen(char* str) { if (*str != ' ') return 1 + my_strlen(str+1); else return 0; } int main() { char arr[] = "abc";//[a b c ] int len = my_strlen(arr); printf("%dn", len); return 0; } //my_strlen("abc"); //1+my_strlen("bc"); //1+1+my_strlen("c") //1+1+1+my_strlen("") //1+1+1+0
#include4. 求第n个斐波那契数(不考虑溢出)//递归 int fac(int n) { if (n <= 1) return 1; else return n * fac(n - 1); } 迭代 //int fac(int n) //{ // int i = 0; // int ret = 1; // for (i = 1; i <= n; i++) // { // ret *= i; // } // // return ret; //} int main() { int n = 0; scanf("%d", &n); int ret = fac(n); printf("ret = %dn", ret); return 0; }
斐波那契数列:1,1,2,3,5,8,13,21,34……
#include递归(耗费时间) //int fib(int n) //{ // if (n <= 2) // return 1; // else // return fib(n - 1) + fib(n - 2); //} //迭代 int fib(int n) { int a = 1; int b = 1; int c = 0; while (n >= 3) { c = a + b; a = b; b = c; n--; } return c; } int main() { int n = 0; scanf("%d", &n); int ret = fib(n); printf("%dn", ret); return 0; }



