函数的递归2
int my_strlen(char* str)
{if (*str != '\0'){return 1+my_strlen(str+1);}else{return 0;}
}int main()
{char arr[] = "bit";//['a']['b']['c']['\0']////模拟实现一个strlen函数printf("%d\n", my_strlen(arr));//arr传递的是数组首元素的地址,即传递的是元素'a'的地址return 0;
}
int fac(int n)
{if (n - 1 != 0)return n * fac(n - 1);elsereturn 1;
}
int main()
{int n = 0;scanf("%d", &n);printf("%d\n", fac(n));return 0;
}//int main()
//{
// int n = 0;
// sacnf("%d", &n);
// int i = 0;
// int ret = 1;
// //迭代
// for (i = 1; 1 <= n; i++)
// {
// ret = ret * i;
// }
// printf("%d\n", ret);
//
//}
//int count = 0;
// 递归可以求解,但效率太低
//int Fib(int a)
//{
// if (a == 3)
// count++;//统计第3个菲波那契数的计算机次数
// if (a > 2)
// return Fib(a - 1) + Fib(a - 2);
// else
// {
// return 1;
// }
//}
//
//
//int main()
//{
// int n = 0;
// scanf("%d", &n);
//
// printf("%d\n", Fib(n));
// printf("count=%d\n", count);
// return 0;
//}//迭代
int main()
{int a = 1;int b = 1;int c = 0;int n = 0;int i = 0;scanf("%d", &n);if (n > 2){for (i = 0; i < n - 2; i++){c = a + b;a = b;b = c;}printf("%d\n", c);}elseprintf("1\n");return 0;
}
汉诺塔问题求解
#include <stdio.h>
int take(int a)
{while (a > 1){return 2 * take(a - 1) + 1;}return 1;
}int main()
{int n = 0;scanf("%d", &n);//有n个盘子在A柱上面int d=take(n);printf("%d\n",d);return 0;
}