递归和非递归分别实现求第n个斐波那契数。
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int fin_digui(int n)
{
if(n<=2)
{
return 1;
}
else;
{
return fin_digui( n-2)+fin_digui( n-1);
}
}
int fib(int n)
{
int i = 0;
int f1 = 1, f2 = 1, f3= 0;
for (i = 0; i < n - 2; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
int main()
{
int a = 0;
scanf("%d", &a);
printf("%d\n", fib(a));
printf("%d\n", fin_digui(a));
system("pause");
return 0;
}
编写一个函数实现n^k,使用递归实现
#include<stdio.h>
#include<windows.h>
#include<math.h>
#pragma warning(disable:4996)
int digui(int n, int k)
{
if (k == 0)
{
return 0;
}
else if (k == 1)
{
return n;
}
else
{
return n*nPowersOfk(n, k - 1);
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d", &n);
scanf("%d", &k);
printf("%d\n", digui( n, k) );
system("pause");
return 0;
}
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#include<stdio.h>
#include<windows.h>
#include<math.h>
#pragma warning(disable:4996)
int DigitSum(int n)
{
int sum=0;
int m=0;
if(n!=0)
{
m=n%10;
n=n/10;
sum=m+DigitSum(n);
}
return sum;
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", DigitSum( n) );
system("pause");
return 0;
}
. 编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中
的字符串操作函数。
#include <stdio.h>
char * reverse_string(char *p)
{
int n = 0;
char temp;
char *q;
//用q保存开始的p
q = p;
//计算出字符串的大小
while( *p != 0 )
{
n++;
p++;
}
if( n > 1)
{
temp = q[0];
q[0] = q[n-1];
q[n - 1] = '\0';
reverse_string( q+1 );
q[n - 1] = temp;
}
return q;
}
int main()
{
char p[] = "dandanwa";
printf("原字符串是:%s\n",p);
printf("翻转后的字符串是:%s\n",reverse_string(p));
return 0;
}
递归和非递归分别实现strlen
#include<stdio.h>
#include<windows.h>
int my_strlen(char *string)
{
int count = 0;
if (*string != '\0')
{
count++;
}
return count;
}
int strlen(char *string)
{
int count = 0;
if (*string != '\0')
{
string++;
count = 1 + strlen(string);
}
return count;
}
int main()
{
char *str = "abcdfkcukyukuyfkyukyukfef";
printf("%d\n",my_strlen(str));
printf("%d\n",strlen(str));
system("pause");
return 0;
}
递归和非递归分别实现求n的阶乘
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int mutil_digui(int n)
[
if(n=1)
{
return 1;
}
else
{
return mutil_digui( n-1)*n;
}
}
int mutil(int n)
{
int i,j=1;
int mutil=1;
for(i=0;i<n;i++)
{
mutil=j*mutil;
j++;
}
return mutil;
}
int main()
{
int n=0;
printf("please input\n");
scanf("%d\n",&n);
printf("%d\n",mutil(n));
system("pause");
return 0;
}
递归方式实现打印一个整数的每一位
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int show(int n)
{
int number;
if(n<10)
{
return n;
}
else
{
number=n%10;
n=show(n/10);
return number;
}
}
int main()
{
int n=0;
printf("please input\n");
scanf("%d\n",&n);
printf("%d\n",show(n));
system("pause");
return 0;
}