【C语言】递归实现。

来源:互联网 发布:linux服务器增加硬盘 编辑:程序博客网 时间:2024/04/30 15:06

(一)厄密多项式Hn(x)的递归实现

#include <stdio.h>int hermite(int n,int x){    if(n<=0)    {        return 1;    }    else if(n==1)    {        return 2*x;    }    else    {        return 2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);    }    return 0;}int main (){    printf("%d\n",hermite(3,2));    return 0;}

(二)n的k次幂的递归实现

#include <stdio.h>#include <math.h>double cimi(double n,double k){    if(k==0)    {        return 1;    }    else if(k>0)    {        return cimi(n,k-1)*n;    }    else    {        return cimi(n,k+1)*pow(n,-1);    }    return 0;}int main (){    printf("%f\n",cimi(2,-3));    return 0;}

(三)函数DigitSum(n)的递归实现

例如DigitSum(1729),对应返回1+7+2+9之和19。

#include <stdio.h>int DigitSum(n){    int sum = 0;    int tmp = n/10;    if(n != 0)    {        sum = DigitSum(tmp)+n%10;           }    return sum;}int main (){    printf("%d\n",DigitSum(1729));    return 0;}

if(n != 0)保证1729除10到最后得到的1能够进入if里求和。


(四)字符反向排列递归实现

函数原型:reverse(char *string)
实现:将参数字符串中的字符反向排列
要求:不能使用C函数库中的字符串操作函数
#include <stdio.h>#include <string.h>void reverse(char *string){    int len = strlen(string);    if(len <= 1)    {        return;    }    else    {        int tmp = string[0];        string[0] = string[len-1];        string[len-1] = '\0';        reverse(string+1);        string[len-1] = tmp;    }}int main (){    char a[] = "bit-tech";    reverse(a);    printf("%s\n",a);    return 0;}
0 0
原创粉丝点击