#include<stdio.h>voidprint(unsignedint n){if(n >9)print(n /10);printf("%d ", n %10);}intmain(){unsignedint num =0;scanf("%u",&num);print(num);return0;}//最简单的一种递归
#include<stdio.h>//六进制转换voidsenary(int n){if(n >=6)senary(n /6);printf("%d", n %6);//这句话和上句话不能交换位置,不然就错了,因为要从高位到低位打印}intmain(){int n =0;scanf("%d",&n);senary(n);return0;}123/10=12···312/10=1·····21/10=0······1
逆序上去就是123,这就是123的十进制,同理可以理解六进制或者其他进制的转化
//非递归#include<stdio.h>intmain(){int num =0;scanf("%d",&num);int i =0;int j =0;int arr[50]={0};while(num){
arr[i]= num %6;
i++;
num /=6;}//i出来的时候多加了一次for(j = i-1; j >=0; j--)//不实用j的话,for里可以写(i--;i>=0;i--){printf("%d", arr[j]);}return0;}
计算一个非负整数的每位之和
#include<stdio.h>//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19//输入:1729,输出:19intSum(int n){if(n >9)return(n %10)+Sum(n /10);elsereturn n;}//Sum(1234)-->Sum(123)+4(1234%10)-->Sum(12)+3(123%10)+4(1234%10)-->Sum(1)+2+3+4-->1+2+3+4intmain(){unsignedint n =0;scanf("%d",&n);int ret =Sum(n);printf("%d", ret);}
求n的k次方
#include<stdio.h>doublepower(int n,int k){if(k ==0)return1.0;if(k >0)return n *power(n, k -1);if(k<0)return1.0/power(n,-k);}//以上依次改成if==else if==else 逻辑也正确//power(n,k)=n*power(n,k-1)intmain(){int n =0;int k =0;printf("先输入基数,在输入次方数,中间用空格隔开\n");scanf("%d %d",&n,&k);double ret =power(n, k);printf("%lf\n", ret);return0;}