首页 > Windows开发 > 详细

SICP中square(开方)的实现(附C#实现)

时间:2015-11-27 19:38:04      阅读:481      评论:0      收藏:0      [点我收藏+]
#lang racket
(define (square x) (* x x))
(define (sqrt-iter guess x)
  (if (good-enough? guess x)
      guess
      (sqrt-iter (improve guess x)
                 x)))
(define (improve guess x)
  (average guess (/ x guess)))

(define (average x y)
  (/ (+ x y) 2))

(define (good-enough? guess x)
  (< (abs (- (square guess) x)) 0.001))

(define (sqrt x)
  (sqrt-iter 1.0 x))


(sqrt 9)

3.000000001396984
> 

此为SICP中给出的实现方法,使用常规的过程调用能力实现。

下为我在C#中的实现方法。

 1 static void Main(string[] args)
 2         {
 3             double num1;
 4             int num2;
 5             Console.WriteLine("请输入要开方的值:");
 6             num1 = float.Parse(Console.ReadLine());
 7             Console.WriteLine("请输入精度");
 8             num2 = Int32.Parse(Console.ReadLine());
 9             num1 = square(num1,num2);
10             Console.WriteLine(num1);
11             Console.ReadLine();
12         }
13         static double square(double num,int num1)
14         {
15             double precision = Math.Pow(0.1, num1);//定义精度
16             double result = 1;//定义结果
17             while (Math.Abs( Math.Pow((num / result + result)/2, 2) - num) > precision)//
18             {
19 
20                 result = (num / result + result) / 2;
21             }
22 
23             return result;
24         }

 

SICP中square(开方)的实现(附C#实现)

原文:http://www.cnblogs.com/Liqiongyu/p/5001513.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!