求第n个斐波那契数(循环+递归)
递归
#include<stdlib.h>
int fib(int n) {
if (n <= 2) {
return 1;
}
return fib(n - 1) + fib(n - 2);
}
int main() {
int n;
printf("输出第几个斐波数那契:");
scanf("%d", &n);
printf("%d\n",fib(n) );
system("pause");
}
循环
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main() {
int n;
printf("输出第几个斐波数那契:");
scanf("%d", &n);
long long first = 1, second = 1;
long long ret = 0;
for (int i = 3; i <= n; i++)
{
ret = first + second;
first = second;
second = ret;
}
printf("%d\n", ret);
system("pause");
}
N^K
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int mypow(int n, int k) {
if (n == 1) {
return 1;
}
return n * mypow(n, k - 1);
}
int main() {
int n,k;
printf("输出N的K次:");
scanf("%d %d", &n,&k);
printf("%d\n", mypow(&n,&k));
system("pause");
}
输入一个非负整数,返回组成它的数字之和
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int sum = 0;
int DigitSum(n){
if (n == 0) {
return n;
}
sum += n % 10;
return DigitSum(n / 10);
}
int main() {
int n;
printf("输出一个非负数:");
scanf("%d", &n);
DigitSum(n);
printf("%d\n", sum);
system("pause");
}
实现strlen,将参数字符串中的字符反向排列
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int mstrlen(char * str) {
if (* str == '\0') {
return 0;
}
return 1 + mstrlen(str + 1);
}
void reverse_string(char * str) {
int n = mstrlen(str) - 1;
char temp;
if (str[0] == '\0') {
return ;
}
temp = str[0];
str[0] = str[n];
str[n] = '\0';
reverse_string(str + 1);
str[n] = temp;
}
int main() {
char str[]="bcdefgh";
mstrlen(str);
reverse_string(str);
puts(str);
system("pause");
}