摘要:
在函数原型中,列出了函数期望接受的参数,但原型只能显示固定数目的参数。让一个函数在不同的时候接受不同数目的参数是不是可以呢?答案是肯定的,但存在一些限制。 考虑一个计算一系列值的平均值的函数。如果这些值存储于数组中,这个任务就太简单了,所以为了让问题变得更有趣一些,我们假定它们并不存储于数组中。先来看一个计较差的,也是不太稳定的一个解决方案: 1 //计算指定数目的值的平均值(差的方案) 2 float average(int n_value,int v1,int v2,int v3,int v4,int v5) 3 { 4 float sum=v1; 5 if(n_values>...
阅读全文
posted @ 2011-12-04 16:59
candyming
阅读(7340)
推荐(0)
编辑
摘要:
尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个 stack,因为电脑只需要将函数的 parameter 改变再重新跑一次。例如,可以把上一次函数的输出当作下一次的输入。然而,利用尾部递归最主要的目的,是要优化。例如在 Scheme 语言中,明确规定必须针对尾部递归作优化。[1][2]可见尾部递归的作用,是非常依赖于
阅读全文
posted @ 2011-12-04 16:06
candyming
阅读(1686)
推荐(0)
编辑
摘要:
关于c语言部分函数的一些总结和注意事项:递归是一种强有力的技巧,但是和其他技巧一样,它也可能被误用。这里就有一个例子。阶乘的定义往往就是以递归的形式描述的。factorial(n)=1,n<=0;factorial(n)=n*factorial(n-1),n>0;这个定义同时具备了递归所需要的两个特性:1、存在限制条件,当符合这个条件时递归便不再继续;2、每次递归调用之后越来越接近这个限制条件。用这种方式定义阶乘往往引导人们使用递归来实现阶乘函数。程序如下所示: 1 //用递归方法计算n的阶乘 2 3 long factorial(int n) 4 5 { 6 7 if(n<
阅读全文
posted @ 2011-12-04 14:17
candyming
阅读(9284)
推荐(0)
编辑
摘要:
1 //输入一个整型值(无符号),把它转换成字符并打印它,前导0被删除 2 #include<stdio.h> 3 #include<stdlib.h> 4 void binary_to_ascii(unsigned int value); 5 int main() 6 { 7 unsigned int i; 8 printf("please input a value:\n"); 9 scanf("%d",&i);10 binary_to_ascii(i);11 system("pause");12
阅读全文
posted @ 2011-12-04 13:13
candyming
阅读(594)
推荐(0)
编辑